Jump to content

Search the Community

Showing results for tags 'hardware hacking'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • nada
  • Mente Binária
    • Núcleo
    • General
    • Arquitetura de Computadores
    • Certifications
    • Quantum computing
    • Cryptography
    • Challenges and CTF
    • Hardware Hacking
    • Electronics
    • Conferences
    • Forensics
    • Games
    • Data privacy and laws
    • Code breaking
    • Netoworking
    • Pentest
    • Speak to us!
  • Career
    • Study and profession
    • Oportunidades
  • Reverse Engineering
    • General
    • Malware Analysis
    • Firmware
    • Linux and UNIX-like
    • Windows
  • Programming
    • Assembly
    • C/C++
    • Python
    • Other languages
  • Sistemas operacionais
    • GNU/Linux and UNIX-like
    • Windows
  • Segurança na Internet's Discussão

Categories

  • Crackmes
  • Documentação
  • Debuggers
  • PE tools
  • Books
  • Util
  • Packers
  • Unpackers

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Como veio parar aqui?


Website


Github/Gitlab


LinkedIn

Found 5 results

  1. UART SERIAL EM EMBARCADOS UART é um CI utilizado para comunicação serial por uma porta serial. Esta comunicação geralmente é utilizada para debugar e realizar testes. Ter acesso a esta porta é bastante importante para que você seja capaz de acompanhar um processo de boot, ter acesso a um terminal,comunicação entre dispositivos sem “rede” e etc. Pode ser um CI separado ou já vir implementado em um CHIP. Quando conhecemos um CHIP, sua pinagem, é possível identificar os 4 pinos utilizados para esta comunicação serial: VCC, GND,TX e RX. Utilizando ganchos ou soldando fios, podemos criar conexões a serem utilizadas. No entanto, é comum encontrarmos CHIPS descaracterizados, dificultando este processo de localização. Padrão Quadrado - Circulo - Circulo - Circulo Primeiramente, desconheço que esta combinação impressa na placa de circuito seja, de fato, um padrão. Não existe algo oficializando. Mas sim, é possível identificar este pseudo padrão quadrado circulo circulo circulo. Vamos observar as imagens seguintes: TP Link TL-WRT740N ROUTER Dynavision Cybergame Criando acesso aos pinos Para facilitar o trabalho, é interessante criar conexões com as supostas portas. Isso irá te permitir uma forma mais fácil de identificar cada porta e conectar ferramentas de comunicação. Seu computador falando UART Você vai precisar de um conversor USB UART. Maiores informações no tópico [- UART - USB TTL SERIAL -], em : Um Pouco mais de interface UART Existem ótimas publicações detalhando o UART, este artigo escrito por Sjoerd Langkemper e disponível em: https://www.sjoerdlangkemper.nl/2019/03/20/usb-to-serial-uart/ é uma boa referência. Ele escreveu de uma forma bem didática e explicativa, os principais aspectos. É importante que você entenda o que é e como é. São 4 pinos/portas: VCC, TX, RX, GND. Onde: VCC: Voltagem que pode variar entre 3V e 5V. Geralmente não se utiliza este pino. Apenas GND, RX e TX, são necessários. TX: É do tipo transmissão de dados serial. A transmissão é dada da seguinte forma: 1 START bit + data bits (5, 6, 7, 8) + 1 PARITY bit (optional) + STOP bit (1, 1.5, 2) RX: É do tipo recepção de dados serial. A recepção é dada da seguinte forma: 1 START bit + data bits (5, 6, 7, 8) + 1 PARITY bit (optional) + 1 STOP bit GND: Terra Baud Rate Baud rate determina a velocidade de uma comunicação serial. Mensurado em bytes por segundo (bps) e é necessário que as duas extremidades da comunicação estejam na mesma velocidade. Normalmente, nos deparamos com comunicações a 9600bps e dificilmente com algo maior que 115200. Quanto maior a velocidade de transmissão, maior será a exigência de uso de recurso do microcontrolador. Conectando os Fios Como mencionado previamente neste documento, basicamente, precisamos apenas dos pinos RX,TX e GND. É necessário compreender que, o RX de uma extremidade conecta no TX da outra. Isso faz sentido, output conectado ao input. RX ---- TX TX ---- RX GND ---- GND Identificando Para conectarmos corretamente os pinos do nosso device a nossa interface USB ligada ao computador. Evitando degradação de ambas as partes, é essencial que sejamos capazes de identificar cada pino. Vamos aqui detalhar algumas técnicas. Utilizando o multímetro Você vai precisar de um multímetro simples. Vamos observar características de cada porta, a começar com o terra. GND Iremos iniciar localizando o terra. Vamos precisar posicionar o nosso multímetro na posição teste de continuidade. E, para facilitar os testes, ter conexões fixadas nos pinos da interface UART a ser identificada. Como podemos observar na imagem seguinte. No lado esquerdo, uma seta indicando a posição correta no multímetro e, lado direito, as conexões . OBS: Não precisa energizar o equipamento para a identificação do terra. Segundo passo, é encontrar em nosso device um terra como referência. Geralmente, as carcaças são ligadas ao terra do circuito. O plug que recebe a alimentação externa, tem um ground. No nosso caso, iremos utilizar um ponto fácil de identificar. Podemos observar na imagem seguinte, que temos um array de leds. Neles é possível encontrar facilmente um terra que servirá como referência. Uma ponta do nosso multímetro vai terra de referência, do led, e a outra irá tocar um pino de cada vez. O pino com a menor resistência oferecida durante o teste de condutividade, nos leva a concluir que eles estão fisicamente conectados. em nosso caso. Encontramos o terra no terceiro pino, da direita para esquerda. VCC Apesar de não ser um pino obrigatório a ser conectado para este tipo de comunicação, é importante encontrá-lo. Identificando o GND e o VCC, ficamos mais seguros na hora de determinar o RX e o TX. Temos 3 pinos a serem identificados: * Um de alimentação, que vamos imaginar como uma porta que passa um fluxo continuo. * E duas portas que não. Em uma comunicação UART, com fluxo de entrada e saída, nós podemos deduzir, em um olhar bem generalista, que o TX terá mais atividade que o RX, em uma situação de BOOT e funcionamento posterior. Basicamente, a atividade RX deverá ser gerada por um TX externo. No nosso caso, não estamos enviando dado, até o momento.Como algumas aplicações/implementações UART variam entre 3V a 5V, o threshold máximo para determinar um 1 é qualquer coisa acima de 2V. Então, quando estamos procurando pelo VCC, estamos procurando por um pino que provavelmente terá a voltagem estável, no processo de boot e no decorrer do funcionamento. Conecte o terra no terra encontrado anteriormente. E realize uma varredura de portas a procura da porta estabilizada. É PRECISO ENERGIZAR O EQUIPAMENTO. No nosso exemplo, é o quarto pino da esquerda para direita na imagem que estamos utilizando como referência. Logo após o GND, são vizinhos. RX e TX Garantindo que conhecemos o GND e o VCC, fica mais fácil continuar o nosso mapeamento. Novamente, uma ponta vai no terra e a outra vai sair mapeando os dois pinos restantes. Vai depender bastante de como a comunicação serial foi implementada, é recomendado acompanhar a atividade nessas portas após ligarmos o equipamento. Iremos perceber que a porta TX terá uma voltagem menor que o VCC, maior que 2V e quase sempre ativa. Ao contrário da RX, já que é uma porta de "INPUT". O nosso mapeamento fica: TX ---- PIN1 RX ---- PIN2 GND ---- PIN3 VCC ---- PIN4 Verificando o resultado Vamos verificar se os testes realizados para identificar as portas foram bem sucedidos. Podemos utilizar um analisador lógico para observar mais de perto. Utilizei um Saleae clone de 8 canais e o software Pulseview para fazer o decode. Onde: UART Analisador Lógico GND GND TX CH1 RX CH2 Em seguida, temos a sequencia de telas do Pulseview. Decoder para UART Configuração das portas Leitura Existem outros parâmetros importantes, como velocidade do terminal e paridade, por exemplo. Neste momento, estamos nos limitando a identificação de portas, voltaremos a falar sobre estes parâmetros neste tópico. Na imagem seguinte, podemos observar um terminal utilizando o minicom referente a comunicação UART que acabamos de estabelecer. Utilizando um Arduino para mapear as portas. No passo anterior, nós utilizamos um multímetro para determinar GND, VCC, TX e RX. O conceito que utilizamos anteriormente é o "mesmo" que veremos agora. Iremos utilizar um Arduino UNO. Vamos abrir aqui um parentese, este mapeamento requer 4 portas analógicas, fecha parentese. Isso significa que você pode utilizar qualquer modelo de Arduino que satisfaça este pré requisito. Conectando os fios No Arduino, conecte uma extremidade da conexão as portas A0,A1,A2 e A3. Já na outra extremidade, conecte nos 4 pinos a serem identificado. Assim como podemos observar nas imagens seguintes. Parte lógica Com os cabos devidamente conectados nas extremidades. Passaremos para a preparação do Arduino. Primeiramente, certifique que o seu Arduino e a IDE estejam funcionando. Para este procedimento, vamos utilizar o código disponibilizado no repositório da https://securelayer7.net, na URL: https://github.com/securelayer7/PinNinja . Você precisa apenas copiar a versão RAW e colar na sua IDE do Arduino. RAW: https://raw.githubusercontent.com/securelayer7/PinNinja/master/PinNinja/PinNinja.ino Realize o teste de compilação e envie o código para o seu Arduino. Abra a tela de visualização do terminal da IDE do Arduino , na velocidade 9600bs. E em seguida ligue o seu device. A saída esperada, é: Perfeito. Temos o mesmo resultado obtido no processo de identificação utilizando um multímetro. OBS: Por segurança, para evitar queimar o seu Arduino, tente obter a voltagem com um multímetro. Por mais que a maioria dos routers wireless, por exemplo, tenham uma variação entre 3v para 5v no pino VCC, pode ocorrer casos inesperados.
  2. [- Primeiros passos com exemplo -] Este tópico tem como finalidade esclarecer alguns pontos sobre hardware hacking. Se você é um hobbyist como eu, muitas das vezes, pelo o fato da informalidade, não temos a preocupação de explorar uma vulnerabilidade, quebrar alguma proteção, fazer auditoria ou engenharia reversa. Geralmente alteramos um hardware para uma necessidade particular ou apenas por curiosidade. Mas isso não significar fazer de qualquer forma, sem controle e sem motivação. Vale também salientar que é comum não ter progresso por falta da ferramenta certa ou de conhecimento. Neste tópico iremos discutir sobre passos a serem seguidos, tanto por iniciantes, como por intermediários. Assim como profissionais e amadores. Claro, contribua e compartilhe o seu conhecimento, por favor. 1 - Escolher; 2 - Motivação!?; 3 - Catalogar; 4 - Identificar pontos; 5 - Qual caminho devo seguir ?. Escolher A escolha é motivada por vários fatores, assim como mencionado anteriormente. E claro, em alguns casos não temos escolhas, o hardware chega a sua mão via propósitos profissional, pessoal ou aquele pedido amigo/familiar. Se você é iniciante e pode escolher por onde começar, inicie com o básico. Dê preferência a dispositivos que estão em seu campo de conhecimento, um access point, um controle remoto do portão, controle da TV e etc. Motivação!? Se você escolheu um hardware aleatório para estudar/observar/explorar, provavelmente você não tem um objetivo especifico. Neste caso, a sua motivação é explorar e progredir. Se na escolha do hardware você já identificou pontos de mudança, como por exemplo: Mudar a cor do led que representa o power do seu access point que é vermelho para a cor azul. Essa será a sua motivação, pelo menos inicialmente. Catalogar É muito importante conhecer o seu alvo. Neste ponto é onde identificamos os componentes eletrônicos, conectores e etc. Muitas vezes precisamos abrir, desmontar equipamentos e fotografar. Com relação a placas e componentes eletrônicos, tirar fotografias te permitirá identificar modelos e esquemas com bastante facilidade. E claro, é uma fonte de consulta rápida. Inicialmente, comece a catalogar as informações mais acessíveis e disponibilizadas pelo fabricante, quando possível. Identificar pontos Depois de coletar informações importantes do seu hardware, comece a identificar pontos promissores. Tais como: Qual é o chip principal Conexões seriais Jtag I/O Memória E etc Procure se aprofundar em cada item, datasheet é a palavra principal neste passo. Qual caminho devo seguir ? É hora de expandir a árvore. Você tá na base da raiz, e é aqui que as portas abrem, ou não. Se você não tinha uma motivação e chegou até aqui, é bem provável que encontrou um motivo. A dica é universal, comece pelo lado mais fácil, que você encontrou mais informações, que você tem as ferramentas corretas para seguir em frente. Geralmente, voltamos a passos anteriores para conseguir avançar por aqui. UM EXEMPLO PRÁTICO 1 - Escolher Vamos iniciar com algo bem aleatório. Simplesmente sai olhando o que tinha disponível e escolhi um console emulador que tenho guardado. 2 - Motivação!?; Minha motivação é utilizar este dispositivo para exemplificar este tópico. 3 - Catalogar Vamos dividir em sub tópicos. Informações básicos do equipamento Uma breve descrição: Dynavision CyberGame é um console que emula consoles, como: NES, SNES, MegaDrive e outras plataformas. É capaz de reproduzir vídeos e músicas. Tipo do dispositivo: Emulador Fabricante: Dynavision Modelo: CyberGame Versão: NA Destaques do Hardware CPU: PLACA MÃE: MEMÓRIA FLASH: SDRAM: NETWORK: ------------X-----------------X-------------X-------------X------------X--------------X------------- INTERFACE SERIAL: JTAG: FIRMWARE: BOOT: FOTOS: REFERÊNCIAS: Qual é a cara do device ? Fotografe o equipamento antes de desmontar. Alias, fotografar é um processo continuo. Para a sua organização, crie um diretório para guardá-las. Daqui para frente, irei adicionar imagens relevantes ao processo. O seu celular pode te auxiliar neste processo. Visão externa Não apresenta acesso a parafusos de fixação. É necessário remover as abas laterais para ter acesso aos 2 parafusos de fixação. Visão interna geral Existem três partes. A placa principal e 2 periféricas. Uma periférica com RCA e alimentação, outra com o botão RESET POWER e o sensor do controle remoto. Visão da placa principal - Face Superior Já podemos identificar visualmente alguns componentes e conexões interessantes. Identificar o fabricante da placa é importante para pesquisar por modelo e ficha técnica, por exemplo. Não neste caso. Eu particularmente não obtive sucesso na minha busca. E para dificultar ainda mais, temos o CPU descaracterizado, sem identificação. Visão da placa principal - Face Inferior Temos o modelo e fabricante da placa e um chip de memória da SAMSUNG. Postos de Destaque Como mencionado anteriormente, algumas informações foram "ofuscadas" e outras não. Vamos pegar cada um destes postos e discutir sobre eles. CPU - CHIP PRINCIPAL!? Temos um suposto chip principal, sem informações relevantes impressas nele. Até o momento, não sabemos que chip é este e sua função. Mas deduzimos, pela justa posição na placa e o enorme número de conexões/trilhas conectadas ao chip, que temos aqui um forte indicio para deduzir isso. Um chip de memória Instalado na face inferior da placa. Interface Serial !? Temos aqui um suposto UART serial. Para melhor entendimento, consulte o tópico: Identificar esta interface UART fez toda a diferença no processo de identificação e catalogação. Foi possível acompanhar o processo de boot e salvar em um arquivo para visualização posterior. Segue em anexo o log. cutecom.log Vamos observar e tomar nota em alguns trechos do log. Iniciando pelas primeiras linhas. Temos informações relevantes a criação da ROM e informações sobre a memória NAND que conseguimos visualizar diretamente no chip. ü+++MMP RomCode ver 8000.4.0 2009/02/18 pwrc_cfg=a0000006 vic1_rawSts=00000020 keyscan4=00001980 iotraps=00000000 Read Id : ec-dc-c1-15-54-ec-dc-c1-15-54 NAND_TYPE: SAMSUNG u16PageNoPerBlk :64 u16PyldLen :2048 u16TotalBlkNo :4096 ecc_mode :0 Start to read DRAM_Init code from flash... Enter Load_PF u16PageNoPerBlk :64 u16PageSize :2112 u16PyldLen :2048 u16TotalBlkNo :4096 ecc_mode :0 Já entre as linhas 235-260, temos informações sobre o bootstrap: Red Hat Embedded Debug and Bootstrap (RedBoot), podemos observar a possibilidade de interação com o RedBoot == Executing boot script in 0.010 seconds - enter ^C to abort. E informações sobre a imagem de boot. RedBoot(tm) bootstrap and debug environment [ROM] ^MNon-certified release, version v2_0_28 - built 17:41:15, Apr 27 2010 ^MPlatform: SUNPLUS_MMP (ARM 9) ^MCopyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. ^MCopyright (C) 2003, 2004, eCosCentric Limited ^MCopyright (C) 2008, Sunplusmm v1.0.0.3 ^MRAM: 0x00000000-0x00f00000, [0x00200000-0x00f00000] available ^MLoad the kernel file: /Rom/image/8000_mmi.rap ^MLoad image from romfs! ^MFound the image entry point: 0x280040 ^Mg_Cfg_s.redbootCfg:0xc0000004 ^M== Executing boot script in 0.010 seconds - enter ^C to abort ^MRedBoot> go -c 0x280040 ^Mg_Cfg_s.redbootCfg:0xc0000004 ^M+do_go ^Mimage sel: 0, image_sel_set: 0 ^Mrmvb enable! ^MMask interrupts on all channels ^MID-CACHE sync and invalidate ^Mset up a temporary context. workspace_end=0x00f00000, entry=0x00280040 ^Mswitch context to trampoline. workspace_end=0x00efffb0 Informações como : Load the kernel file: /Rom/image/8000_mmi.rap, Platform: SUNPLUS_MMP (ARM 9) e o datasheet, chegamos a conclusão que estamos que estamos diante de um chip/ic SPMP8000.
  3. Neste rápido tutorial, apresento como adicionar um conector SMA fêmea/pigtail em um ESP8266 ESP-01. Isso vai proporcionar adicionar mais ganho ao seu projeto, possibilitando a adição de uma antena. O que você vai precisar: Um módulo ESP8266 ESP-01 Um pigtail SMA fêmea Equipamento para soldagem A antena no módulo é de apenas um polo. Você tem a opção de fazer um corte, com o proposito de dividir este polo em dois. Eu optei por não dividir o polo, mesmo sabendo de todas as implicações. Ficando da seguinte forma: Teste número 1 - Sem antena Utilizando um terminal e conexão serial com o ESP8266 ESP-01, fiz a primeira leitura sem antena. Utilizei o SSID Network como referência. AT+CWLAP="Network" +CWLAP:(3,"Network",-53,"c0:25:e9:9b:6e:4a",6,-29,0) O nível de sinal são -53dBm. Vamos aos teste. Teste número 2 - Antena omni direcional de ganho 3 dBi O resultado foi como esperado, o ganho de +3 dBm com relação a medição anterior. Ou seja, -50 dBm AT+CWLAP="Network" +CWLAP:(3,"Network",-50,"c0:25:e9:9b:6e:4a",6,-29,0) Teste número 3 - Antena 3 dBi - Placa como terra Caso você opte por dividir e utilizar a sua placa como terra, interrompa, faça o corte na antena original, coloque os polos nas posições corretas, como observado na imagem seguinte: Interessante neste teste, é que o valor com antena ficou sempre abaixo de -49 dBm. Nota mental, toda antena precisa de um terra. Teste número 4 - Antena de 9 dBi - Placa como terra Testes com valores satisfatórios / média de -46 dBm AT+CWLAP="Network" +CWLAP:(3,"Network",-46,"c0:25:e9:9b:6e:4a",6,-27,0)
  4. Topico destinado a videos no youtube sobre hardware hacking.
  5. ====== Bem-vindo a bordo ====== Este é um repositório/espaço aberto/livre de conteúdo referente a hardware hacking em geral. Sinta-se a vontade para contribuir e retirar suas dúvidas. Assim como em outros espaços de conhecimento compartilhado na Internet, este Fórum tem regras. Algumas delas, são: * Seja educado(a) e respeitoso(a); * Pesquise antes; * Seja claro(a) e descritivo(a); * Esteja preparado(a) para compartilhar informações relevantes a sua dúvida; * Não fuja do foco; * Referencie autores; * E etc.
×
×
  • Create New...