Ir para conteúdo

Fernando Mercês

Administradores
  • Postagens

    1.510
  • Registro em

  • Última visita

  • Dias Ganhos

    165

Tudo que Fernando Mercês postou

  1. Na verdade eu quis dizer que humanos trabalham tanto com números quanto com texto. ?
  2. Boa, @HelderPereira! Que bom que tá curtindo. Já corrigi o texto lá e aproveitei pra subir umas mudanças que estavam planejadas. ? Abraço!
  3. Fernando Mercês

    Seja Apoiador!

    O Mente Binária foi criado pelo @Fernando Mercês em 2007 como um blog, já com a intenção de compartilhar técnicas para resolver problemas comuns no dia a dia técnico de um profissional de TI. De lá para cá, foram várias mudanças. Passamos de blog a fórum, empresa de treinamentos, até que chegamos ao formato atual de uma instituição sem fins lucrativos suportada pela comunidade. Nosso objetivo é de integrar profissionais de segurança, ajudando, principalmente os iniciantes, a estruturarem suas carreiras, aumentarem seu conhecimento técnico de base e com isso melhorarem suas vidas. Parece difícil? Acreditamos que não. Milhares de pessoas consomem nosso conteúdo mensalmente, que entregamos através de vários projetos na área. Alguns deles são: O portal que você está acessando agora, com mais de 5300 membros, onde publicamos artigos, dicas e mantemos um fórum de discussões para a comunidade. O nosso canal no YouTube Papo Binário, com mais de 30000 inscritos onde já publicamos mais de 400 vídeos de conteúdo sobre segurança, Linux, engenharia reversa, carreira e entrevistas com profissionais da área. Nosso livro Fundamentos de Engenharia Reversa, que você encontra sempre atualizado. Os softwares que fazemos, todos livres e publicados de forma colaborativa, com código e comentários. Os treinamentos que publicamos, todos gratuitos. Para tudo isso ser possível, contamos com uma empenhada equipe de 6 pessoas. Projetos como o Papo Binário têm um custo elevado com viagens para entrevistas, equipamento, edição e produção de áudio e vídeo. O portal também tem custos de hospedagem, domínio e da plataforma. Não conseguimos arcar com tudo sozinhos. Para continuar oferecendo este conteúdo de maneira isenta, livre de influências patrocinadas, precisamos de doações e por isso lançamos mão desta campanha para você, que curte nosso trabalho, se tornar um apoiador do projeto, no estilo patrono. É bem simples: você nos ajuda a continuar e passa a fazer parte do núcleo da nossa comunidade. Olha só as vantagens que você recebe ao doar: Badge de apoiador aqui no portal. Acesso à área Núcleo, onde você será consultado sobre decisões importantes e novos projetos. Após 3 meses de apoio, você passa a ter descontos/vantagens e até gratuidades em ingressos dos seguintes eventos parceiros: BHack BSides Roadsec Desconto de 10% nos treinamentos de C/C++ e C++ com Qt da Agit Informática. Relatório de transparência financeira, postado mensalmente na nossa área Núcleo. Afinal, você tem direito de saber como sua doação está sendo utilizada! Outras vantagens que lançaremos no futuro, sempre pensando em você! Nosso eterno e verdadeiro agradecimento por ajudar a levar conteúdo de qualidade para milhares de brasileiros, incluindo você! ? Quero apoiar! Legal, agora é só escolher um dos métodos abaixo. Lembrando que cada nível de apoiador tem acessos diferentes que você pode conferir aqui. Já doei. Como acesso a área Núcleo? Basta enviar uma mensagem para nós pelo formulário de contato informando seu nome de usuário aqui no site e o e-mail utilizado para a doação. A @Gabrielle Alves vai ter o maior prazer em te responder! Tenho uma empresa, como posso apoiar? Se você tem uma empresa pode ajudar a tornar este sonho realidade com uma doação maior. Em troca podemos colocar seu logotipo nos vídeos do canal Papo Binário, além de te oferecermos as vantagens de membro Apoiador. Outra ajuda é enviar esta página para seu mailing de clientes ou participantes de eventos! Por favor, entre contato com a gente!
  4. @Sergio Prado obrigado pela palestra! Seguem as perguntas que resgatamos do chat: 1. Pls qual o endereço do site de exploiters de hardware? 2. É possível acessar a Jtag de Macs para análise de hardware para fins de manutenção? 3. Por onde um iniciante pode começar a estudar hardware hacking? 4. Gostaria de perguntar se existe uma opção ao bus pirate para dump de memória eeprom? e se o ch341a pode ser utilizado para essa finalidade? 5. O que os fabricantes estão fazendo para bloquear a leitura através desses vetores? (UART e JTAG). 6. Como compilar o firmware extraido do binwalk em um bin e enviar ele de novo pro device? 7. existe um curso para iniciante no site de Introdução ao Hardware Hacking? Ah, pode editar o post inicial do tópico pra inserir os slides de sua palestra por favor? Fique à vontade para editar o texto também, se precisar. Grande abraço!
  5. Versão 3.0.0.1

    149 downloads

    Editor de recursos (seção .rsrc), tipo o ResHack. Coloquei aqui porque tá sumindo da internet e não podemos deixar isso acontecer. ?
  6. Ano passado eu assisti à uma palestra sobre esse novo utilitário da suíte GNU chamado poke. Ele é um editor de dados binários de linha de comando bem diferente dos que costumo usar (HT Editor, Hiew, etc). Hoje decidi testá-lo e curti bastante. Tá em mega beta, então não tá nem perto de ter pacote disponível nos repositórios oficiais das distros Linux, mas consegui compilar e neste artigo vou dar as instruções, que podem variar em cada ambiente, até porque o poke está em constante desenvolvimento. Usei um ambiente Debian testing aqui. Instalando as dependências A dependência mais chatinha de instalar foi a gettext, porque o pacote pronto dela não foi suficiente. Então tive que clonar e compilar: $ sudo apt install perf fp-compiler fp-units-fcl groff build-essential git $ git clone https://git.savannah.gnu.org/git/gettext.git $ cd gettext $ ./gitsub.sh pull $ ./autogen.sh $ ./configure $ make $ sudo make install Com a gettext instalada, agora podemos partir para as demais dependências do poke: $ sudo apt install build-essential libgc-dev libreadline-dev flex libnbd-dev help2man texinfo Só então podemos seguir para a compilação do poke. Compilando o poke $ git clone git://git.savannah.gnu.org/poke.git $ cd poke $ ./bootstrap $ ./configure $ make $ sudo make install Criando links para as bibliotecas Como instalei as bibliotecas do poke em /usr/local e o meu sistema não tinha este diretório configurado para que o loader busque as bibliotecas, precisei criar dois links para elas em /usr/lib: $ sudo ln -s /usr/local/lib/libpoke.so.0 /usr/lib/libpoke.so.0 $ sudo ln -s /usr/local/lib/libtextstyle.so.0 /usr/lib/libtextstyle.so.0 Sei que há outras maneiras de resolver isso, mas fiz assim pra acelerar, afinal eu queria mexer no poke logo! ? Abrindo um binário PE no poke Baixei o executável do PuTTY para brincar um pouco e abri assim: $ poke putty.exe _____ ---' __\_______ ______) GNU poke 0.1-beta __) __) ---._______) Copyright (C) 2019, 2020 Jose E. Marchesi. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Powered by Jitter 0.9.212. Perpetrated by Jose E. Marchesi. hserver listening in port 47209. For help, type ".help". Type ".exit" to leave the program. (poke) Gerenciando os arquivos abertos O poke permite trabalhar com múltiplos arquivos de uma vez. Você pode ver a lista de arquivos abertos com o seguinte comando: (poke) .info ios Id Mode Size Name * #0 rw 0x0010b990#B ./putty.exe ios signifca "IO Spaces". Não tem nada a ver com o SO da Cisco ou com o da Apple. hehe Se quiser abrir outro arquivo, pode usar o comando .file <arquivo> e aí pode selecionar em qual você quer trabalhar com o comando .ios #n onde n é o número que identifica o arquivo, mas vou seguir o artigo com somente um arquivo aberto mesmo, então só teremos a tag #0. Dumpando dados Um dos principais comandos do poke é o dump (perceba este não começa com um ponto) que basicamente visualiza o conteúdo do arquivo, mas este tem várias opções. Vamos à mais básica: A primeira linha na saída acima é só uma régua pra te ajudar a encontrar os bytes. Fiz questão de colar uma captura de tela aí acima pra você ver que o poke colore a saída, mas nos exemplos seguintes vou colar a saída em texto pelo bem da sua largura de banda. ? Por padrão, o dump exibe 128 bytes do arquivo, começando do seu primeiro byte. O número de bytes pode ser alterado na própria linha de comando: (poke) dump :size 64#B 76543210 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789ABCDEF 00000000: 4d5a 7800 0100 0000 0400 0000 0000 0000 MZx............. 00000010: 0000 0000 0000 0000 4000 0000 0000 0000 ........@....... 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000030: 0000 0000 0000 0000 0000 0000 7800 0000 ............x... A sintaxe pode parecer um pouco estranha no início, mas você acostuma rápido. O sufixo #B diz que a unidade usada é bytes. Você pode testar outros valores como 2#KB ou 1#MB por exemplo. ? Dumpando a partir de posições específicas Para dumpar a partir de uma posição específica, podemos usar a opção :from do comando dump: (poke) dump :from 0x30#B :size 32#B 76543210 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789ABCDEF 00000030: 0000 0000 0000 0000 0000 0000 7800 0000 ............x... 00000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 7468 ........!..L.!th No comando acima eu pedi para o poke me mostrar 32 bytes a partir da posição 0x30. Seria o equivalente a fazer hd -n 32 -s 0x30 <arquivo>. O poke mantém um ponteiro de leitura no arquivo, por isso se você comandar somente dump novamente, o dump ocorrerá a partir da última posição lida (no caso, 0x30). Se quiser voltar o ponteiro para a posição zero, é a mesma sintaxe: dump :from 0#B. Interpretando dados O dump sempre te entrega uma saída em hexadecimal, mas e se quisermos interpretar os dados e exibi-los de maneiras diferentes? Para isso a gente larga de mão o comando dump e começa a operar com o jeito do poke de ler e interpretar especificamente, assim: (poke) byte @ 0#B 77UB O sufixo UB significa Unsigned Byte. Se eu quiser a saída em hexa por exemplo, basta eu setar a variável obase (output base): (poke) .set obase 16 (poke) byte @ 0#B 0x4dUB Eu poderia querer ler 2 bytes. Tranquilo: (poke) byte[2] @ 0#B [0x4dUB,0x5aUB] Posso interpretar o conteúdo como número também: (poke) uint16 @ 0#B 0x4d5aUH O prefixo UH significa Unsigned Half (Integer). Perceba que o poke sabe que um uint16 tem 2 bytes e por isso os lê sem a necessidade que especifiquemos o número de bytes a serem lidos. À essa altura você já sacou que equivalentes aos tipos padrão da linguagem C (da inttypes.h na real) estão disponíveis para uso né? Fique à vontade pra testar off64, int64, int32, etc. Lendo strings Além dos tipos numéricos, o poke tem o tipo string, onde ele lê até encontrar um nullbyte: (poke) dump 76543210 0011 2233 4455 6677 8899 aabb ccdd eeff 0123456789ABCDEF 00000000: 4d5a 7800 0100 0000 0400 0000 0000 0000 MZx............. 00000010: 0000 0000 0000 0000 4000 0000 0000 0000 ........@....... 00000020: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000030: 0000 0000 0000 0000 0000 0000 7800 0000 ............x... 00000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 5468 ........!..L.!Th 00000050: 6973 2070 726f 6772 616d 2063 616e 6e6f is program canno 00000060: 7420 6265 2072 756e 2069 6e20 444f 5320 t be run in DOS 00000070: 6d6f 6465 2e24 0000 5045 0000 4c01 0700 mode.$..PE..L... (poke) string @ 0x4d#B "!This program cannot be run in DOS mode.$" Patch simples Vamos fazer um patch simples: alterar o "T" desta string acima de maiúsculo para minúsculo. Basicamente é só colocar à esquerda o jeito que acessamos uma determinada posição do arquivo e igualar ao que a gente quer. Sabendo que para converter maiúsculo para minúsculo na tabela ASCII basta somar 32 (0x20), podemos fazer: (poke) byte @ 0x4e#B = 0x74 Perceba que fui na posição 0x4e, porque na 0x4d temos o '!' e não o 'T'. Só pra checar se funcionou: (poke) string @ 0x4d#B "!this program cannot be run in DOS mode.$" (poke) Legal né? Mas dá pra ficar melhor. O poke suporta char, então podemos meter direto: (poke) char @ 0x4e#B = 't' (poke) string @ 0x4d#B "!this program cannot be run in DOS mode.$" Por hora é só. Fica ligado aí que postarei a parte 2 em breve, onde vou mostrar mais recursos do poke que tô achando bem úteis para engenharia reversa. Até lá! ?
  7. Comecei a estudar a linguagem Go há alguns dias e fiquei muito impressionado com seus recursos. A facilidade para programação paralela, o fato de ter ponteiros, funções que retornam mais de um valor, código enxuto (se você declarar uma variável e não usar, o programa nem compila!) e outros realmente me encantaram. Recentemente precisei disassemblar um trecho de código de um binário PE para um projeto que está escrito em Go. Vi que existem algumas bibliotecas prontas para serem usadas, como gapstone (bindings da Capstone) e go-zydis (bindings da Zydis) mas não encontrei uma nativa. No entanto, vi que existe uma ferramenta nativa no toolset da linguagem similar ao objdump do GNU binutils: $ go doc cmd/objdump Objdump disassembles executable files. Usage: go tool objdump [-s symregexp] binary Objdump prints a disassembly of all text symbols (code) in the binary. If the -s option is present, objdump only disassembles symbols with names matching the regular expression. Compilei um "hello, world" em Go só pra ver: ~/hello $ cat main.go package main import "fmt" func main() { fmt.Println("menteb.in") } ~/hello $ go build E de fato o objdump da Go funciona: ~/hello $ go tool objdump hello | head TEXT go.buildid(SB) :-134217728 0x1001000 ff20 JMP 0(AX) :-134217728 0x1001002 476f OUTSD DS:0(SI), DX :-134217728 0x1001004 206275 ANDB AH, 0x75(DX) :-134217728 0x1001007 696c642049443a20 IMULL $0x203a4449, 0x20(SP), BP :-1 0x100100f 226d35 ANDB 0x35(BP), CH :-1 0x1001012 4c6f OUTSD DS:0(SI), DX :-1 0x1001014 6a52 PUSHL $0x52 :-1 0x1001016 436e OUTSB DS:0(SI), DX :-1 0x1001018 4a31794f XORQ DI, 0x4f(CX) Mas ao tentar com o um PE compilado pra 64-bits, descobri que só funciona com binários feito em Go. ? $ go tool objdump putty.exe objdump: disassemble putty.exe: no runtime.pclntab symbol found De qualquer forma, resolvi olhar o código-fonte deste objdump interno da linguagem pra ver qual é dessa mandinga. Na linha 43 do main.go do objdump tem um import pra uma biblioteca chamada objfile. Pensei: Wow, deve ser uma biblioteca de disassembly, talvez eu possa alterar ! E na hora já criei um projeto tentando usá-la mas fui surpreendido com um errão! kkkk ~hello $ cat main.go package main import "fmt" import "cmd/internal/objfile" func main() { fmt.Println("menteb.in") } ~hello $ go build main.go:4:8: use of internal package cmd/internal/objfile not allowed Não pesquisei muito sobre essa história sobre eu não poder usar um pacote interno (por quê o objdump pode e eu não posso?!), mas fui olhar esta objfile e terminei encontrando seu fonte. Para minha alegria, neste arquivos disasm.go vi os seguintes imports: "golang.org/x/arch/arm/armasm" "golang.org/x/arch/arm64/arm64asm" "golang.org/x/arch/ppc64/ppc64asm" "golang.org/x/arch/x86/x86asm" Agora sim, carái! É tudo público e posso usar. Desculpe o desabafo.. hehe o artigo na verdade começa aqui mas quis contar como cheguei porque né. ? Cada uma dessas bibliotecas possui uma função Decode() justamente pra decodificar uma instrução (tipo Inst). Testei com um NOP em 64-bits, só pra ver: package main import ( "fmt" "log" "golang.org/x/arch/x86/x86asm" ) func main() { dados := []byte{0x90} ins, err := x86asm.Decode(dados, 64) if err != nil { log.Fatalln(err) } fmt.Println(ins) } A saída foi exatamente a esperada: $ ./hello NOP Show. Agora é abrir um PE, ler de onde quero e daí disassemblar usado essa x86asm.Decode() num loop, mas vou deixar esse exercício aí pra quem quiser treinar Go. Ou se acharem útil posso postar um aqui mais tarde. Aqui já funcionou mas precisa de uma polida. ? Perceba também que há bibliotecas para ARM e PowerPC. Achei bem maneiro. Talvez em breve o time da Go adicione suporte a mais arquiteturas. Amém! ?
  8. O que é Análise de Malware? É o processo de entender como um malware funciona, o que faz e qual seu impacto no ambiente alvo. Pode envolver análise de toda a campanha ou infraestrutura do malware e até mesmo chegar em atribuição. Como funciona? Com conhecimentos de engenharia reversa, análise estática e dinâmica, além de algum conhecimento específico da comunidade de investigação, é possível mapear as rotinas maliciosas de um arquivo, entender seu funcionamento e até mesmo gerar assinaturas para deteção, prevenção e mitigação de ataques de malware. O treinamento O AMO (Análise de Malware Online) é um treinamento de análise de malware básico gratuito publicado no nosso canal no YouTube Papo Binário, graças ao suporte dos nossos apoiadores. A ideia é formar um analista de malware júnior, que possa atuar com análise em empresas ocupando cargos na área de análise de malware, resposta à incidentes, SOC, analista forense, entre outros. O instrutor @Fernando Mercês é Pesquisador de Ameaças na Trend Micro, onde atua como investigador de ciber crime, utilizando engenharia reversa e técnicas de inteligência de ameaças no time de Pesquisa de Ameaças Futuras (FTR). Criador de várias ferramentas livres na área, com frequência apresenta suas pesquisas nos principais eventos de segurança no Brasil e no exterior. É também professor e fundador da Mente Binária, uma instituição de ensino e pesquisa sem fins lucrativos comprometida com o ensino de computação no Brasil. Pré-requisitos Conhecimento em criação de máquinas virtuais. Ter assistido o Curso de Engenharia Reversa Online (CERO). Ter assistido o Programação Moderna em C. Aulas publicadas Aula 0+1 - Preparando o ambiente e analise inicial do primeiro malware! Aula 02 - Conhecendo o DIE e o IDA Aula 03 - Monitoração de chamadas com o API Monitor Aula 04 - Análise dinâmica de criptografia (Parte 1) Aula 05 - Scriptando o x64dbg Aula 06 - Análise dinâmica de criptografia (Parte 2) Aula 07 - Identificando algoritmo de criptografia e básico do Yara Aula 08 - Encontrando mais samples do mesmo malware Aula 09 - Desofuscando strings (Parte 1) Aula 10 - Desofuscando strings (Parte 2) Aula 11 - Monitoração de rede (Parte 1) Aula 12 - Desofuscando strings (Parte 3) Aula 13 - Desofuscando strings (Parte 4) Aula 14 - Monitoração de rede (Parte 2) Aula 15 - Analisando scripts Aula 16 - Analisando shellcode (Parte 1) Aula 17 - Analisando shellcode (Parte 2) Aula 18 - Convertendo shellcode em EXE Aula 19 - Runtime Linking (Parte 1) Aula 20 - Runtime Linking (Parte 2) Aula 21 - Analisando DLLs Aula 22 - DLL side-loading Aula 23 - API hashing Aula 24 - DLL injection Aula 25 - Enumeração de processos Aula 26 - Process Hollowing Aula 27 - Analisando múltiplas threads Aula 28 - Análise de Documentos do Office e Macros Aula 29 - Criando um desofuscador em VBScript
  9. @SodaSodaBashi opa, infelizmente não tem um log no Discord pra saber que mensagem que causou isso.. pode ter sido algum spam? De qualquer forma, tá de volta. Desculpe o inconveniente. ?
  10. Bem vindo, @Wellington Rocha! Obrigado pelo feedback! Espero que curta a comunidade aqui! ?
  11. Não sei como o @fredericopissarra gerou os PDF's, mas talvez seja possível usar algum conversor?
  12. O time de desenvolvimento do Ghidra anunciou a versão 9.1 do software, agora com suporte aos processadores SH1/2/2a, Tricore, HCS12X, HCS08, SH4 e MCS-48. Podem parecer muito exóticos, mas SH4 por exemplo é uma das plataformas alvejadas por malwares para IoT como Mirai e outras botnets. Dentre os novos recursos, tem o suporte à edição de estruturas (structs) e uniões (unions) nos Data Types, assunto que cobrimos na aula 08 do treinamento de Ghidra aqui do Mente Binária. ? Lista completa das alterações e links para download no site oficial.
  13. Oi @diego.rax! Os slides vão estar disponíveis pra download no site da H2HC em breve. ? Abraço!
  14. O pesquisador Fermín J. Serna, keynote speaker na H2HC este ano, iniciou sua palestra intitulada OSS Security: Here be dragons falando sobre a lendária edição da H2HC em Cancún realizada há 10 anos. "Eram umas 25 pessoas, sendo que 10 eram palestrantes", brincou. ? Fermín foi o principal desenvolvedor do já descontinuado EMET e sua paixão por segurança defensiva é notória. Hoje, CSO na Semmle, empresa agora parte do Github, ele afirmou que o software livre venceu e hoje 90% dos softwares utilizam outros, de código aberto. Fermín lembra que software livre é gratuito do ponto de vista monetário, mas não vem com segurança grátis. "Software livre de segurança vem com desafios. Você consome, mas precisa investir". Vários exemplos de vulnerabilidades foram mostrados durante a palestra, inclusive uma tentativa de se colocar uma backdoor no kernel Linux que aconteceu em 2003. Tudo isso antes de apresentar o projeto CodeQL, que consiste num esforço de criar uma linguagem de query para encontrar bugs (principalmente de segurança, mas expansível a quaisquer outros tipos) em códigos-fonte. O projeto já encontrou vulnerabilidades em softwares de código aberto, incluindo o U-Boot e o próprio kernel Linux. "Dá trabalho confirmar as vulnerabilidades, mas só de atribuições indevidas, já encontramos umas 1300 no kernel Linux", contou. Apesar de tantos bugs, Fermín fez questão de dizer que isso não é culpa dos programadores: "software de código aberto é ótimo e está aqui pra ficar. Não devemos culpar os desenvolverdes. Devemos nos culpar, porque não os ajudamos", reiterou. Parabéns, Fermín! ?
  15. Se você é nosso leitor há algum tempo, já deve ter visto a @barbieauglend por aqui. O que talvez você não soubesse, é que ela se juntou com o Gustavo Scotti para dar uma palestra que ocupou dois slots na H2HC este ano. Com a sala lotada, Gustavo e Thais mostraram como escreveram um exploit confiável para uma vulnerabilidade no kernel Linux, registrada sob o CVE-2017-11176. A palestra começou com a Thais falando sobre seu passado em análise de malware e os desafios da migração para computação ofensiva. Já o Gustavo, experiente pesquisador na área, se mostrou extremamente solícito tanto em ajudá-la com este exploit quanto com o público: "Se vocês tiverem qualquer dúvida, podem perguntar a qualquer momento. Quem for tímido pode falar comigo individualmente depois da palestra. Vou ficar por aí no evento hoje e amanhã". Ele comentou que muitas vezes as pessoas ficam "travadas" em algum lugar e precisam de ajuda para seguir seus estudos. Ajuda esta que ele oferece a quem procurá-lo. A dupla tomou como base de estudo a publicação da vulnerabilidade num blog francês, mas rapidamente verificaram que o texto se referia a uma versão diferente do kernel da especificada no artigo. O desafio foi entender a falha e escrever o exploit corretamente, de forma confiável. Os pontos altos da palestra foram justamente como fizeram isso. Gustavo recomendou automatizar tudo o que é possível para reduzir o tempo de iteração e atentou para o fato de que, em kernel land, é necessária muita estabilidade. "A Thais conseguiu explorar a falha com sucesso mas depois de 10 minutos ao ganhar root, o kernel travava", comenta. Foi preciso corrigir os ponteiros usados nas estruturas utilizadas pelo exploit e fazer uma série de ajustes para que o exploit ficasse de fato confiável. "Eu achei massa porque eles fizeram bypass de SMEP (Supervisor Mode Execution Prevention), que impede que código de kernel execute código em user space", comenta @Ygor Da Rocha Parreira, pesquisador da área e parte da organização do evento. "Antigamente quando explorando um bug de kernel, como o espaço de endereçamento é compartilhado entre kernel e user space dentro do processo corrente, era mais fácil a partir dele, acessar dados e executar código em user space. O SMEP/SMAP impede isso, mas eles burlaram com ROP (Return Oriented Programming) em kernel land", adiciona. "O objetivo da nossa palestra era, como o nome sugere, de levar o conhecimento e não só mostrar o exploit funcionando. Por isso a gente mostrou desde o básico, como decodificar memória, até como as estruturas funcionavam para que as pessoas realmente se motivassem e entendessem que é um processo que não precisa intimidar. Não é necessário saber tudo. Pode-se aprender durante a pesquisa.", falou Gustavo pra gente. Ele insiste que o contacte no Twitter para eventuais dúvidas. Valeu, Gustavo! ? O público aplaudiu e achamos que o Gustavo e a Thais conseguiram despertar na audiência o interesse de estudar computação ofensiva e apresentar um caminho, que é o de seguir blogs, textos escritos por pesquisadores, pesquisar com falhas antigas e, como o Gustavo oferta, se tiver qualquer dúvida, pode falar com ele. ?
  16. Segundo o Valor Econômico, a empresa Chinesa Baidu vai encerrar suas operações no Brasil até setembro. Desde 2013 o antivírus e a toolbar desta empresa tem gerado opiniões não muito felizes e memes, tudo isso porque a empresa escolheu investir no formato que chamam de bundle, onde basicamente injetam seus softwares no sistema operacional do usuário quase que sem o seu consentimento: sites de downloads como o Baixaki e até o Sound Forge ofereciam os softwares da Baidu junto com o download de outros softwares que nada tinham a ver com segurança. Eu mesmo tive a experiência de baixar o Audacity para editar um arquivo de áudio e ao final da instalação percebi um ícone me avisando que meu PC estava agora protegido pelo Baidu. E já tinha um antivírus instalado! Foi um espanto e na hora de remover o Baidu praticamente implorou que eu não o fizesse, afirmando poder coexistir com outros antivírus sem nenhum problema. Haja petulância viu?! Outro problema enfrentado por usuários forçados do Baidu era remover o antivírus do computador. Em algumas versões, era quase impossível sozinho. Não é à toa que uma busca por "remover baidu" no Google Brasil retorna mais de 350.000 resultados, com tutoriais de como desinstalar, vídeos no YouTube ensinando e até softwares para realizar árdua tarefa. Segundo a empresa, ainda há uma base de 20 milhões de usuários de seus produtos no Brasil, que vão continuar sendo atendidos. Não é o fim do software, tampouco da empresa, apenas as operações (funcionários, escritórios, etc) no Brasil cessarão. Um amigo resumiu: o Baidu saiu do Brasil, mas não dos computadores dos brasileiros. ? E na sua experiência? Conta aí pra gente! ?
  17. Pois então, não acha que ainda podemos considerar RSA com chaves grandes razoavelmente seguro? A apresentação fala em "quebrar contas bancárias". O apresentador não explica, mas se ele tá falando de online banking, cai no caso do TLS que você comentou. Além disso, a técnica apresentada no vídeo não é nova. O surgimento da CADO-NFS se deu nisso, não foi? O burburinho não seria exagerado? RSA pode ter seus dias contados, mas não talvez não tenhamos chegado lá ainda. ?
  18. O CEO da Crown Sterling, uma startup na área de criptografia, fez um anúncio em uma palestra publicada no YouTube incluindo uma demonstração de quebra da criptografia RSA em menos de um minuto. A apresentação gerou vários comentários na comunidade de segurança da informação mundial, mas acontece que na prática as coisas não são tão simples assim. Pedimos ao Bruno Trevizan (@trevizan), especialista em criptografia e colaborador do Mente Binária, para comentar o assunto. "Um parâmetro importante para o criptosistema RSA é o tamanho (em bits) do módulo público n, principal elemento da chave pública, sendo esse o produto de dois números inteiros primos (p e q) também utilizados no cálculo da chave privada. O ataque demonstrado lança mão da abordagem de fatoração de inteiros, que consiste em encontrar um divisor não trivial de um número composto, ou seja, encontrar um dos inteiros primos p ou q, tal que n = p x q, onde n é informado como elemento da chave pública. Obtendo sucesso na recuperação desses fatores, o atacante é capaz de calcular a chave privada. Contudo, apesar do ataque demonstrado ter sido bem-sucedido, o exemplo contido na demonstração utiliza o módulo público de 256 bits, tamanho de chave não recomendado para nenhum caso", explica. A notícia também foi criticada pelo criptógrafo Bruce Schneier, que lembrou que 256 bits é um tamanho de chave que nunca foi considerado seguro, ou seja, é "quebrável" mesmo. Além disso, o CEO da Crown Sterling, Robert Grant, diz na palestra que uma chave de 512 bits poderia ser quebrada em aproximadamente 5 horas, mas não demonstra. "Contudo, o parâmetro em questão é reconhecidamente inseguro desde 1999, sendo que seu uso não é recomendado nem para sistemas legados. Sendo o tamanho mínimo tolerado para suportar a sobrevida de sistemas legados de 1024 bits, é recomendável o uso 2048 bits ou mais", adiciona Bruno. Outros nomes na área de segurança da informação acreditam se tratar mais um sales pitch do que qualquer outra coisa. No Twitter, Nicholas Weaver, PhD em Berkeley, sugeriu que a ferramenta apresentada pela Crown Sterling seja na verdade uma cópia da CADO-NFS, uma ferramenta de código aberto desenvolvida por pesquisadores na França que consiste na implementação do algoritmo de Number Field Sieve (NFS) para fatoração de números inteiros. Waver nota que a mensagem de saída apresentada no vídeo da Crown Sterling é exatamente a mesma da ferramenta CADO-NFS, o que sugere seu reuso. Victor Mello, Especialista em Segurança Sênior na Neoway, quando soube da notícia fez um script simples em Perl para o mesmo propósito: "para quem tiver interesse, testei aqui e levou em torno de 8 minutos usando GMP num laptop de 8 núcleos (cores). Utilizei o mesmo n que o pessoal da Crown Sterling usou na demonstração", comenta. Victor compartilhou conosco o código-fonte do seu script: use Math::Prime::Util::GMP ':all'; use bigint; # Find prime factors of big numbers @factors = factor(shift); for my $i (@factors) { print $i . "\n"; } Resumindo, quebraram o que já era quebrável. Não precisa fugir para as colinas ainda. ?
  19. Obrigado, @Linces! Já somos mais de 100 agora, @wescleyp. ?
  20. No dia 23 de Junho de 1912, há 107 anos atrás, nascia o inglês Alan Turing. Aos 21 anos, se formou em matemática em Cambridge, tendo recebido uma menção honrosa por ser o primeiro da classe. Emociono-me enquanto escrevo isso: eu com 21 anos tava procurando bares e festas. ?‍♂️ Durante a segunda guerra mundial, Turing, aos 26, decidiu tentar quebrar a criptografia da máquina alemã Enigma, utilizada para encriptar mensagens entre as várias bases alemãs, liderando o departamento miliar inglês conhecido Hut 8. Ainda em 39, Turing quebrou a criptografia da Enigma, um feito fundamental para a derrota da Alemanha Nazista e o fim da guerra. Por que? Nas palavras dele: "Porque ninguém estava fazendo nada em relação a isso e eu poderia fazer" - emociono-me de novo aqui. Seu conceito de "Máquina de Turing" foi fundamental para a ciência da computação que conhecemos hoje. De forma bastante resumida, se uma linguagem de programação é Turing complete, dizemos que esta pode ser utilizada para resolver qualquer problema computacional. É o caso de linguagens como C, Python, Ruby, JavaScript e praticamente todas as outras. Qualquer problema algorítmico pode ser resolvido com qualquer uma delas, em tese. O trabalho na área de criptologia continuou e Alan seguiu beneficiando o mundo inteiro com sua genialidade, até que em 1952, aos 39 anos, foi preso sob acusação de "indecência" por ter tido relações afetivas com Arnold Murray. É simples assim. Um homem beijar outro homem era crime na Inglaterra na época e Alan foi condenado a escolher entre castração química ou prisão. Escolhido a primeira, recebeu hormônios para redução de libido por cerca de um ano. Em meio há inúmeros textos, sites e livros que contam parte de sua história, vale o destaque para o filme de fácil acesso "O Jogo da Imitação": O tratamento funcionou: Turing ficou impotente e a feminização de seu corpo era visível. Aos 41 anos, se matou ingerindo uma dose letal de cianeto injetada na metade de uma maçã, assim como encena "Branca de Neve", seu conto de fadas predileto. A ideia ignorante de diferença pôs um fim às contribuições de Alan, mas estas deixaram um legado: hoje temos a oportunidade de reconhecer nossa igualdade através de sua história. Somos livres para não investirmos mais nessas crenças de diferenças e à isso, em nome de toda a equipe do Mente Binária, agradecemos por seu trabalho, por sua existência, por seu espírito hacker. Hacker é isso. É não aceitar o que se é imposto, mas não faz sentido.
  21. Praticamente nenhuma, mas o Orfox só era necessário enquanto não existia o Tor Browser e, de acordo com o desenvolvedor, deve parar de ser mantido: Orfox will be sunsetted by early 2019 when the stable Tor Browser for Android comes out. To experience real private browsing without tracking, surveillance, or censorship, download Tor Browser for Android from GooglePlay. Fonte: https://play.google.com/store/apps/details?id=info.guardianproject.orfox&hl=en
  22. Existem várias ferramentas multiplataforma para assemblar e disassemblar código, mas a grande maioria são programas que precisam ser instalados no computador antes de serem utilizados. Isso até o shahril96 publicar seu Assembler e Disassembler online e de código aberto, baseado no Keystone.js e Capstone.js. Seu uso é muito simples e por enquanto há suporte a arquiteturas ARM, ARM64, MIPS, x86, x86-64, PowerPC, SPARC e SystemZ. O Assembler recebe o código e imprime os bytes em formato bruto (raw), de string, vetor em C e disassembly. Já o Disassembler recebe qualquer uma dessas saídas como entrada e imprime as mesmas saídas. É sem dúvida útil em casos onde se precisa estudar Assembly, uma das bases para engenharia reversa, e não se tem um software como este à mão. Lembrando que tanto nosso livro Fundamentos de Engenharia Reversa quanto nosso Curso de Engenharia Reversa Online (CERO) apresentam noções de Assembly x86 para quem está começando. Hora de estudar! ?
  23. Essa é uma história verídica: Tive o celular (um iPhone 7) furtado no último fim de semana e houve tentativas, afortunadamente sem sucesso, de hackear minhas contas. Nesse artigo vou explicar como me protegi, na esperança de que você se proteja também. Isso antes que tenha o celular roubado, furtado ou perdido. ? Após perceber que meu celular não estava no meu bolso comecei a dar valor a todas as ações de proteção que tomei. Consegui ligar para o Nubank, que cancelou o cartão (pois é, eu colei aquele lindo porta cartão roxo que eles mandam na traseira do celular e por isso foi tudo junto: celular e cartão de crédito). Por um momento pensei que para cancelar o cartão do Nubank eu precisaria do aplicativo do mesmo, mas eles possuem um número que podemos ligar. E você consegue cancelar seu cartão após confirmar alguns dados. Nota importante: você precisa estar sóbrio o suficiente para confirmar seus dados. Não entrarei em detalhes aqui como fiz. O telefone estava bloqueado com um código numérico de 6 dígitos (padrão nas últimas versões do iOS). E não era nada do tipo "000000" ou "123456". Dá um negócio escrever isso. Na verdade, gostaria de escrever que meu código era alfanumérico (que é mais seguro, em geral), mas não era. Mesmo assim, era "aleatório" o suficiente, creio eu, então confiei que o ladrão não conseguiria desbloquear o aparelho. Como todos os dedos de ambas as minhas mãos estavam no lugar, achei que o ladrão também não tinha minhas digitais para tentar o Touch ID. ? Ao chegar em casa, fiz login no iCloud utilizando meu Apple ID para usar o Find My iPhone, que estava ativado. A última localização conhecida foi onde eu estava mesmo, ou seja, o danado desligou o telefone, removeu o chip ou fez alguma outra coisa para que este ficasse sem sinal. Também recebi o seguinte e-mail do Facebook: E-mail do Facebook para confirmação de alteração de senha Ou seja, o abençoado tentou resetar minha senha do Facebook. Como? Bom, o aplicativo do Facebook para iOS não pede senha ao abrir, então deduzi que o ladrão não tinha conseguido desbloquear o telefone. Cliquei no link "avise-nos" destacado no fim da mensagem, verificando que era do Facebook mesmo, só para bloquear novas tentativas. Daí vem minha primeira hipótese: o ladrão queria tomar minha conta do Facebook. Como no Facebook é possível logar via número de telefone, imagino que ele tenha removido o chip do telefone, posto em outro para ver o número e tentado resetar a senha pelo site do Facebook, bastando apenas para isso ter o meu número: Tela de recuperação de senha por número de telefone no Facebook (não é exigido nome de usuário) Não sei como pretendiam clicar no link que chega no meu e-mail. Talvez esperassem que a confirmação chegasse via SMS. Fiz um boletim de ocorrência no site da Polícia Civil e marquei a caixa que os autoriza a bloquear o IMEI do telefone, para que este se torne inútil. Pois é, eu tinha o IMEI e o número de série (ambos necessários para o bloqueio pela polícia) anotados. Também liguei para a operadora e pedir para bloquear o chip. O golpe comum no Brasil de colocar o chip em outro aparelho e começar a falar no WhatsApp com seus amigos e familiares pedindo dinheiro se passando por você também não rolou, pois minha conta do WhatsApp era protegida por um PIN, que é a autenticação de dois fatores do WhatsApp. Vamos às dicas para cada momento: Enquanto seu celular está com você: Anote marca, modelo, IMEI e número de série do seu aparelho em algum lugar. Também o PIN e PUK do chip (vem no cartão). Pode ser mandando um e-mail para você mesmo e deixando-o lá para sempre. Utilize um bom código alfanumérico (letras e números). Nada de padrões de desenho (em Android) ou códigos numéricos como "1234", "0000" ou afins. Jamais use um telefone sem código de bloqueio. Utilize autenticação de dois fatores em todas as suas contas de redes sociais e serviços de Internet (Facebook, Instagram, Gmail, etc), mas nunca por SMS, pois eles têm acesso ao chip quando obtêm seu telefone! Use sempre por aplicativo (recomendo o Authy porque você pode usar no desktop e no celular (e em outros dispositivos) - aí se perder o celular você ainda tem o app no desktop pra te dar os tokens). Imprima os códigos de recuperação do aplicativo de autenticação de dois fatores escolhido no passo acima e guarde em casa, porque com o celular você perde o aplicativo de autenticação de dois fatores junto! Habilite a autenticação de dois fatores (via PIN) no aplicativo do WhatsApp (Ajustes -> Conta -> Confirmação em duas etapas). Do contrário você pode ser vítima do golpe de falsidade ideológica que comentei no texto. Sempre habilite o Touch ID, reconhecimento facial ou senha para todos os aplicativos que suportam. Normalmente os de banco suportam. Para e-mails, sei que o Outlook suporta. Para notas, o Evernote suporta (o que o deixa mais seguro que o aplicativo de notas padrão do telefone). O WhatsApp também suporta. Dessa forma, mesmo que o gatuno roube seu telefone desbloqueado, não verá seu e-mail e não acessará os apps dos bancos. Habilite o PIN do chip (no iPhone esta configuração fica em Ajustes -> Celular -> PIN do SIM). Dessa forma, será solicitada uma senha quando o meliante colocar seu chip em outro aparelho. Lembrando que o chip já vem com um PIN da operadora, que você vai precisar para alterar. Os padrões são Vivo: 8486; TIM: 1010; Claro: 3636; Oi: 8888 mas o correto mesmo é ver no cartão do qual o chip é destacado quando vem. Todo cuidado é pouco aqui, pois é muito fácil bloquear o chip ao tentar desbloqueá-lo incorretamente 3 vezes. Aí só ligando pra operadora, ou usando o PUK para desbloquear. Desabilite a visualização de SMS na tela bloqueada (para que o conteúdo do SMS não seja mostrado). É uma boa ideia desabilitar quaisquer outras notificações também, ou pelo menos previnir que seu conteúdo seja exibido na tela bloqueada. Desabilite a Siri (iOS) na tela bloqueada (Ajustes -> Siri -> Permitir Quando Bloqueado). Do contrário, basta que alguém pergunte "Qual o meu nome?" para saber seu nome, telefone, empresa (dependendo do que constar no seu contato), como mostra a captura de tela abaixo: Siri entregando seus dados pra qualquer um Também é possível pedir à Siri para "Mostrar ligações perdidas". A ordinária vai mostrar a última ligação perdida somente, mas é possível inclusive retornar a ligação, mesmo com a tela bloqueada: Siri mostrando quem te ligou e permitindo retornar As medidas acima você deve tomar agora que tem seu telefone com você, pois todo cuidado é pouco. Vale ressaltar que os ladrões de rua, os "mão leve" podem não ser especialistas em TI, mas certamente existe um "departamento de TI do crime" onde eles levam estes celulares roubados e lá pessoas que entendem do assunto tentam hackear suas contas. Se todas essas medidas forem tomadas, acho que você pode ficar tranquilo como eu fiquei. Pra ser honesto, eu não segui a recomendação de número 7, sobre o PIN do chip e só por isso conseguiram meu número pra tentar resetar a senha do Facebook. Mesmo assim não rolou, pois meu 2FA no Facebook era via app, não SMS (isso porque segui bem a recomendação de número 3) mas serviu pra ver onde vacilei. Depois de ser roubado/furtado ou perder o celular: Se você desconfia que perdeu o celular (não é roubo, nem furto), pode tentar localizar o aparelho, mas tenha em mente que quanto mais tempo você deixar o chip habilitado, mais tempo os bandidos têm para tentar as fraudes. Já aconteceu de eu perder o celular e só conseguir ligar pra ele dois dias depois, pois quem achou não tinha um carregador de iPhone à mão. Se eu tivesse bloqueado o aparelho ou o chip, não conseguiria ligar. Então aqui é sempre delicado. Depende do que rolou e o do nível de risco que você quer assumir (sinta em seu coração), mas: Ligue para a sua operadora e informe o ocorrido. Eles vão bloquear o chip. Cancele seus cartões de crédito (há casos em que ladrões utilizaram Apple Pay e similares para fazer compras ou mesmo pediram comida em apps como iFood e Uber Eats). Faça um boletim de ocorrência na delegacia mais próxima ou pela Internet. Você vai precisar dos dados lá do passo 1 do que fazer enquanto seu celular está com você. Desconecte o dispositivo das suas contas de e-mail, redes sociais e outros serviços (é impossível enumerar todos, mas serviços comuns são Gmail, Facebook, Instagram, Twitter, Spotify, etc). Programe a deleção dos dados pelo site do fabricante (Google, Apple, etc). No novo telefone: Se não teve jeito e você comprou um telefone novo, tudo bem. Vida nova. Só fica esperto(a) porque se você fizer mantiver o mesmo número, os criminosos podem tentar entrar em contato via ligação, SMS, WhatsApp, iMessage, etc se passando pela fabricante do telefone, dizendo que o acharam e pedindo as credenciais do iCloud, por exemplo. Com elas, é possível desbloquear o telefone roubado. Não caia nessa. ? Roubo, perda e furto de telefones são muito comuns em grandes cidades. É importante que você tente se previnir. Abaixo, por exemplo, um mapa dos furtos de celulares em São Paulo, dados de 2021. Busque a Secretaria de Segurança Pública do seu estado para informações sobre outras regiões. Fonte: Folha de São Paulo Quem tiver outras dicas, só postar nos comentários que incorporo aqui. Se quiser me contar como fazer pra Android as configurações acima, comenta aí também. Ah, depois de fazer tudo isso no seu telefone, seja um bom amigo e compartilhe este artigo com todo mundo que tem um smartphone pelo bem da nação. ? Atualização em 16/05/2019 - Adicionei uma captura de tela da Siri entregando quem te ligou e recomendei o Authy expressamente, pois parece ser realmente melhor que Duo Mobile e Google Authenticator, já que pode ser utilizado em vários dispositivos (incluindo no desktop) e possui suporte ao Touch ID. Atualização em 16/01/2020 - Recomendei o Evernote para notas, pois tem suporte à autenticação quando o aplicativo é aberto. Também mencionei que é possível configurar essa senha (ou TouchID/FaceID) no WhatsApp. Atualização em 14/04/2022 - Adicionado mapa de furtos de celulares em São Paulo / 2021.
  24. Saiu hoje uma nova versão do poderoso ScyllaHide, plugin com o objetivo de esconder o debugger de protectors que o detectam. Tem versões para x64dbg, IDA, OllyDbg, além de uma versão genérica. Além de já contar com perfis específicos para os protectors VMProtect, Obsidium, Themida e Armadillo, o ScyllaHide permite configurar cada opção individualmente. Não é um plugin para iniciantes, mas a documentação em PDF contida no pacote para download ajuda muito. ? Acha que vale um vídeo no Papo Binário explicando algumas de suas opções? Comenta aí! ?
×
×
  • Criar Novo...