Fernando Mercês Postado Abril 29, 2020 em 19:16 Compartilhar Postado Abril 29, 2020 em 19:16 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: Citar From a first glance at the recent LockBit sample with a reverse-engineering tool, we can tell that the program was written primarily in C++ with some additions made using Assembler. For example, a few anti-debug techniques employ the fs:30h function call to manually check the PEB (Process Environment Block) for the BeingDebugged flag, instead of using IsDebuggerPresent(). 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! Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Arquivado
Este tópico foi arquivado e está fechado para novas respostas.