Jump to content

Fernando Mercês

Administradores
  • Content Count

    618
  • Joined

  • Last visited

  • Country

    Brazil

Everything posted by Fernando Mercês

  1. Eu nem criei um projeto, @Matheus Miguel. Criei os dois arquivos e compilei com a linha de comando. 😉
  2. Interessante... eu nunca tinha visto esse padrão de nome. Não me parece o name decoration / mangling normal de C++. E mesmo assim o extern "C" deveria impedir a decoração, claro, já que C não tem sobrecarga de funções. Será que não há uma função com o mesmo nome nessa pch.h? Achei uma discussão longa de um usuário com um problema muito parecido, inclusive ele cita o mesmo padrão de nomes aqui. Bem, eu iria com baby steps, saca? Compila a menor possível, checa os exports e, se tiver tudo certo, vai crescendo o código e checando os exports da DLL compilada, até encontrar o problema. Por exemplo, o código abaixo foi sem problemas aqui: // user_force.h int _stdcall USER_FORCE(int a, int b); BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } // user_force.cpp extern "C" __declspec(dllexport) int _stdcall USER_FORCE(int a, int b) { return a + b; } Compilação: c:\Users\admin\Documents>cl /LD user_force.cpp Microsoft (R) C/C++ Optimizing Compiler Version 15.00.30729.01 for x64 Copyright (C) Microsoft Corporation. All rights reserved. user_force.cpp Microsoft (R) Incremental Linker Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. /out:user_force.dll /dll /implib:user_force.lib user_force.obj Creating library user_force.lib and object user_force.exp Checagem dos exports: c:\Users\admin\Documents>dumpbin /exports user_force.dll Microsoft (R) COFF/PE Dumper Version 9.00.30729.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file user_force.dll File Type: DLL Section contains the following exports for user_force.dll 00000000 characteristics 5ECD966F time date stamp Tue May 26 23:21:35 2020 0.00 version 1 ordinal base 1 number of functions 1 number of names ordinal hint RVA name 1 0 00001000 USER_FORCE Summary 3000 .data 1000 .pdata 2000 .rdata 1000 .reloc Daí seria ir acrescentando o código e recompilando toda hora, até achar o problema... Mas pode ser que alguém saiba exatamente o que ocorre aqui e ajude também. Abraço!
  3. Você tem algum serviço escutando na porta 80 no seu host? Porque você tá enviando o pacote, mas se não tiver ninguém pra responder, não vai ter resposta mesmo. 😉 Você não falou em que SO está, mas se for Linux/macOS, experimenta escutar com o netcat, numa porta alta pra não precisar de root, por exemplo: $ nc -vlp 3000 E depois tenta enviar seu TCP SYN pra ela usando o Scapy (dport=3000 no teu código). Enfim, basicamente você precisa falar com uma porta que esteja aberta (haja algum serviço escutando nela). Abraço!
  4. De nada 🙂 O código-fonte (à esquerda) é em C e pode ser compilado pra 16, 32 ou 64 sem problemas. Já o exemplo do código compilado à direita tá em Assembly e o fato de ter esse ".model small" acredito que só faça sentido em programas de 16-bits sim, mas aqui tem uma explicação mais completa: https://stackoverflow.com/questions/47252660/what-is-meaning-of-model-small-in-8086-programs Abraço!
  5. Isso é código de 16-bits. Nunca usei o MASM para tal, mas esse cara dá algumas dicas pra fazer funcionar: https://blog.fpmurphy.com/2017/11/16-bit-intel-assembly-on-windows-10.html - perceba que ele só rodou o binário no DOSBox (um emulador de DOS), mas compilou no MASM 6.14 e 7.10 (com a opção /omf). Enfim, dá um trabalhinho mas vai. 😉 Abraço!
  6. O que você tá buscando é por exibir strings UTF-8. Eu achava que o x64dbg suportava (não tenho como testar agora). Uma opção pode ser o plugin https://github.com/horsicq/stringsx64dbg 😉
  7. Opa, que legal que tá pondo isso em prática! O @Thiago de Queiroz certamente pode explicar melhor, mas acredito que a forma como esteja fazendo não seja muito efetiva porque estás usando trace over (ou seja, não entra nas funções) e a função que é chamada quando qualquer evento na janela do programa ocorre (tipo o clique de um botão) não está na WinMain (que é essa que você postou o disassembly). Esse código de 4010F1 até 40111B é um loop clássico de uma janela usando a Win32 API. Antes de ele ser executado, é definida uma estrutura do tipo WNDCLASSA, que vai ser registrada com a RegisterClassA(). No teu código, a inicialização dessa estrutura começa em 40101D. Conforme a documentação, o segundo elemento dela é o seguinte: lpfnWndProc Type: WNDPROC A pointer to the window procedure. You must use the CallWindowProc function to call the window procedure. For more information, see WindowProc. "Window procedure" que dizer: a função que vai tratar os eventos da janela. No caso do teu programa, o valor deste elemento é colocado com esse MOV em 401027. Como o x64dbg já o reconhece como WndProc, você pode ddar um Ctrl+G e digitar "WndProc" pra cair nela. Recomendo fazer um trace over no mínimo a partir dela, mas ainda podem haver mais calls que vão fazer o trace parar. É que a abordagem de "traçar tudo" que você tá tentando fazer é muito custosa. Tracing é incrível mas na minha opinião é pra ser usado a partir de algum ponto. Não sei o que os demais pensam sobre, nem uso muito tracing também. Mas enfim, belo tópico! 😉 EDIT: Outra coisa que lembrei é que você pode usar Message Breakpoints como neste tutorial. Ao parar na USER32.DLL, ao invés de fazer o esquema de breakpoint on execution na .text, pode simplesmente ver a call stack (Ctrl+K) e ir no último endereço do módulo principal. Vai parar direto no código do clique do botão OK da janela "Register". Aí é só tracear de lá. 😉 Abraços!
  8. Sim, é uma fraqueza em minha opinião também. Eu recomendo usar apps que tenham suporte à senha/digital/reconhecimento facial etc ao serem abertos. No iOS, conheço o Outlook (free) e recentemente conheci o Canary (pago). Pra Android não sei. Dá uma olhada nesse artigo também ó: Abraço!
  9. Fernando Mercês

    MBConf@Home v3

    until
    Nós de novo com nossa conferência, totalmente online e gratuita! Todas as informações sobre a MBConf estão disponíveis em http://menteb.in/conf . Se você já viu tudo lá e quer se registrar, basta confirmar sua presença aqui. Pouco antes do horário de início da conferência você receberá um link para ingressar nela. Agenda 10h00 - Abertura - Fernando Mercês 10h15 - Fio Cavallari - Decodificando malwares web: uma história de dor e sofrimento 11h05 - Thiago Marques 11h55 - Jan Seidl 12h45 - Bruno Oliveira 13h35 - Encerramento Lembre-se de compartilhar a conferência nas suas redes sociais. 😎
  10. Oi Gabriel! Que eu lembre o instalador do IDA já instala tudo que precisa. Se for original você pode postar no fórum deles, mas se for piratex aí fica difícil, pois o instalador pode estar zuado, pode até conter vírus, enfim, não sabemos. 😞 Abraço.
  11. Mais uma: 1.Qual seria o risco no mundo real pra isso (já que você citou que está aberto e encontra com o shodan)? 🙂
  12. E aí, galera, fazemos uma v3? Se sim, respondam aí! Fazemos uma por mês? Uma por ano? Vocês escolhem aê, depois discutiremos e vamos ver o que sai. 🙂 Obrigado por participarem disso! 💚
  13. Pergunta que surgiu e não tempo ó: 2.é possível utilizar a GPU para processar mais rapidamente esses comandos?!?
  14. Perguntas que surgiram no chat: 1.Em um CTF, é possível que as máquinas virtuais vulneráveis passado para o participante de alguma forma ao atacar a máquina, há possibilidade de serem atacados? 2.como faço para treinar nesses ctf? 3.tem algum site para iniciantes?
  15. Hoje eu tava lendo um blogpost da Sophos, LockBit ransomware borrows tricks to keep up with REvil and Maze, quando esse trecho me chamou a atenção: Pelo que entendi os autores basicamente implementaram o que a IsDebuggerPresent() já faz. Dá pra ver o código dela por qualquer disassembler. No caso usei a linha de comando do x64dbg (pode carregar qualquer binário, mesmo que ele não importe a IsDebuggerPresent): d IsDebuggerPresent Vai cair em algo como: 7524A480 | FF25 680E2B75 | jmp dword ptr ds:[<&IsDebuggerPresent>] | Aí é só dar [ENTER] que o x64dbg segue o salto e mostra o dissasembly da IsDebuggerPresent: 769A4940 | 64:A1 30000000 | mov eax,dword ptr fs:[30] | 769A4946 | 0FB640 02 | movzx eax,byte ptr ds:[eax+2] | 769A494A | C3 | ret | Já que é na KERNELBASE.DLL que a implementação da função realmente está, poderia ter digitado direto no x64dbg também: d kernelbase.IsDebuggerPresent Tem mais detalhes sobre essa BeingDebugged flag na aula 24 do CERO. 😉 Fiz tópico só pra dar um exemplo de que mesmo coisas básicas vistas no CERO estão por aí nos blogs das principais empresas de segurança do planeta, ou seja, o conhecimento que trabalhamos aqui é útil profissionalmente. Podem ter certeza. Por mais iniciante que seja, a gente busca entregar coisas sólidas, que certamente são usadas no mercado. Abraço!
  16. https://github.com/Turing-Tecnologia/Processo-Seletivo-Trainee/
  17. Posta o que você já fez e onde exatamente estão suas dúvidas, Bruno. Do contrário acho que não muito como a galera ajudar... 😉 Abraço!
  18. 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 mais de 2000 membros que você está acessando agora, 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 20000 inscritos onde já publicamos mais de 300 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 tar 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ó doar para a campanha no apoia.se e escolher entre cartão de crédito ou boleto bancário! 💚 Alternativamente, você pode usar o PicPay: As vantagens mudam de acordo com a doação? Não! A gente parte do princípio que todo apoiador merece o mesmo. Agradecemos muito qualquer valor mensal. Se você puder pagar mais, ótimo. Se não, ótimo também. 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! Apoio:
  19. Oi Halison! Olha, não acho que exista uma "forma correta", viu... Se você patcheou ou mesmo impediu "por fora do malware", ou seja, pelo sistema que a ecriptação ocorresse, em minha opinião já foi. Tá feito. Em vários casos nem é necessário impedir a encriptação, ou esta é feita a cada execução, tanto faz. Na aula 3 do AMO pus em prática a ideia de patchear a função que encripta, mas tem certamente muitas outras maneiras e acho que a certa é a que funciona. 🙂 Como no seu caso funcionou, parabéns! Em minha experiência, análise de malware não é um conjunto de técnicas, é uma aplicação de vários conhecimentos que quase sempre resulta em diferentes soluções para diferentes problemas mesmo. Abraço!
  20. @maycon uma pergunta que resgatamos do chat: 2.Se o código smali é similar a um disassembly e ele tem equivalentes diretos com o próprio código java, qual a vantagem da existência do código smali? A propósito, pode por seus slides no primeiro post deste tópico? Só editar como quiser. 😉 Abraço!
  21. @Wanderley Caloni temos uma pergunta não respondida 🙂 - eu tenho interesse de brincar com essa parte de escrever kernel pra linux, etc, oq vc recomenda para eu comecar a aprender?
  22. @Thiago de Queiroz seguem mais perguntas que surgiram no chat: 1.Qual a diferença deste debug para o WinDbg? 2. Este debug tmb converte o código para c? 3. Isso funciona mesmo se o executável for gerado sem as diretivas de debug? 4. Os endereços de memória das áreas de .txt, .data e .rsrc se encontram no cabeçalho PE? Abraço!
  23. @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!
  24. @rmarinho seguem as demais perguntas que resgatamos do chat! 🙂 10. A detecção desses dispositivos vulneráveis é feita normalmente por onde? ferramentas como o shodan? 11. Skaros e checkers funcionam no mesmo princípio de namenode e datanodes em clusters? Derrubando os namenode (skaros) derruba a botnet...não digo tecnicamente, mas na infra, abs. 12. Na pesquisa houve colaboração de outros profissionais de outros países? 13. Essa ausência de comandos para atacar terceiros não pode ter sido por conta do bloqueio que você fez quanto às comunicações de saída, permitindo apenas pacotes SYN? 14. É possível através da Botnet, resolver questões das credenciais? Exemplo: COmando de mudança de senha? 15. Os Skaros tinham controle independente da rede ou tinha um nível acima de controle sobre eles, foi possível identificar isso?
  25. Fernando Mercês

    MBConf@Home v2

    until
    Nós de novo com nossa conferência, totalmente online e gratuita! Todas as informações sobre a MBConf estão disponíveis em http://menteb.in/conf . Se você já viu tudo lá e quer se registrar, basta confirmar sua presença aqui. Pouco antes do horário de início da conferência você receberá um link para ingressar nela. JÁ TÁ ROLANDO: Agenda 10h00 - Abertura - Fernando Mercês 10h15 - Conhecendo InfoSec jogando CTF's - Rafael ChOkO 11h05 - Abusando de fuzzing no Windows - Otavio Silva 11h55 - Escalação de privilégios no Linux - Victor Mello 12h45 - Hacking em dispositivos hospitalares - Pasknel Ribeiro 13h35 - Encerramento - Yumi Ambriola Lembre-se de compartilhar a conferência nas suas redes sociais. 😎
×
×
  • Create New...