foi Borland Delphi 2009-2010.Fizeram um upgrade no Delphi, na maioria das vezes a versao e 6.0ou 7.0. OsImportsAgora simvamos iniciar a analise do codigo, as ferramentas que irei utilizarserao o IDA Pro para analise estatica e o OllyDbg para debuggingde alguns trechos do codigo.Aocarregar o arquivo no IDA a primeira coisa que fiz foi abrir a abaImports, ou seja, as funcoes que o malware importa da API doWindows. Eram muitos imports, mas alguns me chamaram atencao:MessageBoxAQueryPerformanceCounterGetTickCountWriteFileIsDebuggerPresentGetEnvironmentVariableAGetEnvironmentVariableWDeleteFileWCreateMutexAShellExecuteAOsimports de um programa dizem muito sobre suas funcionalidades. Apartir dessa pequena lista podemos deduzir muitas coisas, o uso doMessageBoxA no diz que o malware em algum momento apresentauma mensagem para o usuario.Ao verQueryPerformanceCounter e GetTickCount logo imagineique eram utilizadas para anti-debugging. Geralmente elas saoutilizadas na tecnica de Time Check, onde o malware tira umtimestamp, realiza algumas instrucoes, tira outro timestamp ecompara os dois. Se otempo decorrido for maior que o normal ele supoe que esta rodandodentro de um debugger, ja que o debugger atrasa a execucao docodigo. E ainda tambem ha o uso da funcao IsDebuggerPresent,o nome ja diz tudo. Estariamos lidando com um malware com tecnicasanti-debugging? Veremos mais adiante.WriteFilee DeleteFile nos diz que o malware grava e apaga arquivo nodisco. GetEnvironmentVariable no mostra que o malware manipulaou utiliza alguma variavel de ambiente do SO. CreateMutexe a funcao que cria objetos que sao compartilhados por processos,isso para lidar com a concorrencia, ou semaforo, entre osprocessos. Veremos mais sobre ela adiante. ShellExecuteArealiza operacoes em um arquivo, do tipo abrir, editar, imprimir,etc.O Aou W que existe no final do nome das funcoes se referem aASCII ou UNICODE (Wide), respectivamente. Para descobriro que cada funcao faz, consulte o site da MSDN, pode-se buscar noGoogle: NomedaFuncao msdn.Apesardos muitos imports, algo me chamou atencao, nao havia nenhumimport de API relacionada a funcoes de rede. Muito estranho para ummalware ja que praticamente todos utilizam a Internet para secomunicarem com um servidor C&C, baixarem mais pragas, enviaremdados, etc. Somente havia imports das DLLs: kernel32, advapi32,oleaut32, shell32 e user32.Porem,ao buscar as strings do malware, encontrei referencias a DLLs comfuncoes de rede: WS2_32.DLL, MSWSOCK.DLL, Wship6.dll eFwpucInt.dll. Entao, essas DLLs devem ser carregadas pelo malware emtempo de execucao atraves da funcao LoadLibrary. Veremostambem sobre isso adiante.Aindafalando sobre as strings, encontrei algumas criptografadas, nodecorrer da analise veremos o uso delas.Ja temosalgumas informacoes sobre as funcionalidades do malware, hora deseguir em frente e encarar o (dis)assembly!Caminhosde execucaoEssemalware funciona de maneira peculiar, ele e recursivo. Na verdade,apos a primeira execucao originada pelo usuario ele seauto-executa mais duas vezes. Em cada execucao ele passa poralgumas validacoes e e direcionado para um caminho diferente decodigo, ate atingir o objetivo final.Vamosseguir as funcoes principais do codigo para entender melhor comisso funciona. Abaixo o trecho inicial do codigo. Use essa imagempara acompanhar o que esta sendo explicado, esse e o fluxoprincipal do programa, o Main Code.1aExecucaoAssim queo malware e executado pelo usuario, e chamada uma funcao quedenominei FilePathInfo. Essa funcao e complexa, dentro delaha chamadas para umas outras 20 funcoes, nesses casos para naonos perdermos devemos abstrair e tentar entender o proposito geralda funcao, para isso o debugger ajuda muito.Descobrique basicamente essa funcao