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

75 lines
6.4 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
- **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-06 18:56:34 +00:00
**Redefinir** um dispositivo para os padrõ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 de teclas especiais** no **painel de controle** da impressora. Realizar uma redefinição fria leva apenas alguns segundos e, portanto, é um cenário realista para atacantes locais ou testadores de penetração, que podem, por exemplo, se infiltrar na sala de cópia na hora do almoço. No entanto, **o acesso físico** ao dispositivo nem sempre é uma opção.
2022-05-01 12:49:36 +00:00
### SNMP
2023-06-06 18:56:34 +00:00
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)), redefinir as configurações NVRAM (resetToNVRAM(5)) ou restaurar os padrõ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 incorporado. 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 nenhum serviço DHCP** estiver disponível, o atacante **não** poderá **se reconectar** ao dispositivo após redefini-lo para os padrões de fábrica.
2023-06-06 18:56:34 +00:00
**Redefinir o dispositivo para os padrões de fábrica** pode ser realizado usando o comando `snmpset`, conforme mostrado abaixo (você precisa saber a **cadeia de comunidade**, que por padrão na maioria dos casos é `public`):
```bash
snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6
```
2022-05-01 12:49:36 +00:00
### [PML](./#pml)/[PJL](./#pjl)
2023-06-06 18:56:34 +00:00
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 incorporado à uma tarefa de impressão legítima. Isso permite que um atacante **reinicie e/ou restaure o dispositivo** para os padrões de fábrica dentro de tarefas de impressão comuns, como mostrado abaixo:
```bash
@PJL DMCMD ASCIIHEX="040006020501010301040106"
```
2023-06-06 18:56:34 +00:00
Qualquer pessoa pode reproduzir esse ataque em impressoras HP, reiniciando ou resetando o dispositivo pode ser facilmente reproduzido usando o [**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
```
2022-05-01 12:49:36 +00:00
### PostScript
2023-06-06 18:56:34 +00:00
O PostScript oferece um recurso semelhante: o parâmetro do sistema **FactoryDefaults**, "uma bandeira que, se **definida como verdadeira** **imediatamente antes** da **impressora ser desligada**, faz com que todos os parâmetros não voláteis voltem aos seus valores **padrão de fábrica** na próxima inicialização". Deve-se notar que o **PostScript** em si 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**, como discutido em ataques de negação de serviço (DoS) de [processamento de documentos](http://hacking-printers.net/wiki/index.php/Document\_processing), o que força o usuário a **reiniciar manualmente** o dispositivo e, assim, redefinir a senha do PostScript.
2023-06-06 18:56:34 +00:00
Redefinir os parâmetros do sistema PostScript para os padrões de fábrica:
```bash
<< /FactoryDefaults true >> setsystemparams
```
2023-06-06 18:56:34 +00:00
Reinicie o interpretador PostScript e a memória virtual:
```bash
true 0 startjob systemdict /quit get exec
```
2023-06-06 18:56:34 +00:00
Qualquer pessoa pode reiniciar ou redefinir o interpretador PostScript de uma impressora **facilmente reproduzível 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
```
2022-05-01 12:49:36 +00:00
### PRESCRIBE
2023-06-06 18:56:34 +00:00
Para dispositivos **Kyocera**, as linguagens de descrição de página **PRESCRIBE** podem ser usadas para **redefinir o dispositivo** para o padrão 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";
```
2023-06-06 18:56:34 +00:00
Para reproduzir este ataque, abra uma conexão de rede bruta para a porta 9100/tcp da impressora e **envie os comandos documentados acima**.