Jump to content

Fernando Mercês

Administradores
  • Content Count

    634
  • Joined

  • Last visited

  • Country

    Brazil

Community Reputation

0 Neutral

Personal Information

Recent Profile Visitors

7,822 profile views
  1. Excelente notícia! 🙂 Um dica: Percebi que ao fazer a doação o site do Crown pede o DNI (um registro nacional utilizado na Espanha). Os instrutores do curso recomendam usar um DNI padrão: 12345678Z pra quem não mora na Espanha. Foi esse que usei. 😉
  2. until
  3. Que legal, @octavio rainha!
  4. E não muda a análise. Reversa num binário assinado ou não, tanto faz que eu saiba. 🙂
  5. Gente, só um alerta pra gente se ater à parte técnica da discussão (isto é, quem quiser postar) pois é muito fácil sair do controle e começar o ataque pessoal e aí entra aquele processo de apagar mensagens, blá, blá, blá. Evitem por favor. 🙏 @Kleber Augusto Wilcke pelo que entendi o bin é um array de int. Bom, no meu sistema aqui não tem a itoa(). Acho que não é padrão essa função. Mas de qualquer forma, os caracteres em ASCII equivalentes aos números começam em 0x30 (que é o '0'). O 0x31 é o '1' e assim vai até 9. Sendo assim, se você somar 0x30 ao int, mas fazendo um cast pra char antes pra caber na string (que é um array de char), é uma forma. Tipo, o código abaixo imprime "01010101": #include <stdio.h> int main(void) { int bin[8] = { 0, 1, 0, 1, 0, 1, 0, 1 }; char s[9] = {0}; for (int i=0; i<8; i++) s[i] = (char) bin[i] + 0x30; puts(s); return 0; } Mas o ideal seria escrever uma função tipo a atoi(), que tivesse checagem de erros, etc.
  6. Galera, Tava analisando um certo aspecto do VPNFilter e vi que ele cria uma entrada em /etc/config/crontab. Vocês sabem dizer se esse caminho é padrão em dispositivos IoT? Pergunto pois pra mim sempre foi /etc/crontab. 🙂 Obrigado!
  7. Fernando Mercês

    MBLive v1

    Depois do sucesso da MBConf, teremos nossa primeira MBLive! hehe O objetivo é trocar uma ideia informal com nossa comunidade. Colá lá: https://www.instagram.com/mentebinaria_/ 🙂
  8. Fernando Mercês

    8.8 Solidaria

    until
    8.8 Solidaria, forma parte del programa de actividades organizadas por 8.8 Computer Security Conference, un evento 100% técnico y académico, que tiene como principal objetivo compartir información, democratizar el conocimiento y crear comunidad. https://welcu.com/chile-green-events/8dot8-solidaria
  9. Tem vários caminhos. O primeiro que me vem à mente é criar um buffer e usar a fread() para ler. Usando fopen, fread, fwrite, etc deixará seu programa portável, mas se a intensão é trabalhar em Linux e seus amigos somente, pode usar open(), read(), write() etc. Na aula 18 do curso Programação Moderna em C eu falo sobre como ler os bytes de um arquivo PE (mas pode ser qualquer outro, claro): Mas I/O é custoso. Talvez seja interessante você usar funções que leiam o arquivo inteiro para a memória e depois ler de lá. Neste caso eu não sei se tem algo portável, mas na libpe por exemplo, o @jweyrich optou por usar mmap() e a gente compila pra Windows usando o Cygwin. Mas se estiver falando de C++, aí eu não sei. Talvez o @fredericopissarra? Abraço!
  10. Nem imaginava que estas instruções funcionariam @Lucas Campelo! Sério mesmo? Não precisou adaptar nada? Abraço!
  11. Salve! Obrigado pela sugestão! A gente tá com bastante dificuldade em sacar a grana que arrecadamos no YouTube para as doações que rolaram na MBConf, mas assim que a gente conseguir, vamos considerar isso sim. @Paulo Arruzzo o que acha? Conseguimos replicar as categorias de apoio que já temos lá? Abraços!
  12. Boa tarde! Seria legal reportar o problema no Github dos caras. É difícil a gente conseguir confirmar isso... teria que analisar. De qualquer forma, no nosso curso é recomendado o PE Tools? Eu acho que não conhecia esse toolkit, não lembro de ter recomendado... rs Abraço!
  13. Show! Tudo é possível. rs Mas pelo que entendi você quer parar em todas as chamadas à funções externas, certo? Bem, nunca tentei para em todas. Daria pra fazeer pela aba "Symbols", mas como é payload, pode ser que esteja vazia. Parece um pouco de exagero, mas uma ideia é no Trace -> Trace into você colocar uma condição (Break Condition) onde o registrador EIP esteja fora da faixa das seções do binário. Por exemplo, num binário assim (Memory Map): Como as seções dele estão na casa dos 0x400000, a condição eip > 0x500000 vai fazer o x64dbg parar quando uma função externa for chamada. Você tem a faixa de endereços do teu payload, então é só adaptar. Mas eu ainda acho que monitorando as chamadas, seja com trace, logando ou com API Monitor ou outro e depois breakando em cada uma delas é mais negócio. Sabendo em qual chamada você quer parar, é só ir na Command Bar do x64dbg (lá embaixo) e digitar "BP CreateFileA" por exemplo. 😉 Abraço!
  14. A partir daí, eu acho que eu deixaria o payload rodar e monitoraria as chamadas (API Monitor, drltrace, etc) pra ver que funções do Windows o payload chama. Depois você pode voltar ao x64dbg e por breakpoint nelas para analisá-las. Acho mais importante/fácil que debugar todo o código. Outra opção é usar o trace do x64dbg pra você ver o caminho de códigos (saltos) que o payload executa e não perder tempo analisando junk code. O @Thiago de Queiroz mostrou como usa o trace na palestra dele na primeira MBConf. 😉 Abraço!
  15. Na verdade eu quis dizer que humanos trabalham tanto com números quanto com texto. 😉
×
×
  • Create New...