Ao analisar e fazer engenharia reversa em alguns malwares me deparei com um padrão de strings criptografadas que se repetia em alguns trechos do código.
Não sei se isso pode ser chamado de criptografia ou obfuscação, mas enfim, é um método que o fraudador utiliza para esconder algumas strings de olhares curiosos. Pelo menos na idéia dele ninguém conseguirá entender o que escreveu (deixa ele pensar assim :) .
Bem, agora eu pergunto, você sabe me dizer o que significam as strings abaixo encontradas em um malware real?
xoj buopd be psfn
FZF_0102_TTBMDJOV_VBUJ
ojhpm/MO/mbnspo/nfmfufd/mbuspq/tqa/sc.npd.nfmfufd.aaa//:tquui
!fuofnbufsspd febejmbx fe bube b fnspgoJ
usbd po pebxbsh fnpO p fujhjE
OVS\OPJTSFXUOFSSVD\TAPEOJA\UGPTPSDJN\FSBAUGPT
.fuofnbufsspd sbmvuju pe GQD p fujhjE
FZF_0102_TTBMDJOV_VBUJ
ojhpm/MO/mbnspo/nfmfufd/mbuspq/tqa/sc.npd.nfmfufd.aaa//:tquui
!fuofnbufsspd febejmbx fe bube b fnspgoJ
usbd po pebxbsh fnpO p fujhjE
OVS\OPJTSFXUOFSSVD\TAPEOJA\UGPTPSDJN\FSBAUGPT
.fuofnbufsspd sbmvuju pe GQD p fujhjE
Fica aí o desafio, caso tenha se interessado deixe um comentário.
[POST ADICIONADO EM 18/10/2010]
Os colegas nos comentários rapidamente descobriram a lógica por traz dessa criptografia caseira como foi citado. Realmente é só inverter a direção da string e para cada letra pegar a anterior do alfabeto.
Os colegas nos comentários rapidamente descobriram a lógica por traz dessa criptografia caseira como foi citado. Realmente é só inverter a direção da string e para cada letra pegar a anterior do alfabeto.
Para as strings citadas a descriptografia é:
mero da conta inv
itau_uniclass_2010_exe
https://www.cetelem.com.br/wps/portal/cetelem/normal/nl/login
informe a data de validade corretamente!
digite o nome gravado no cart
software\microsoft\windows\currentversion\run
digite o cpf do titular corretamente.!
No dia que eu encontrei essa tipo de criptografia e descobri a lógica delas eu até fiz um script PHP para descriptografar automaticamente, não é muito elaborado mas fica aí como exemplo.
<?php
itau_uniclass_2010_exe
https://www.cetelem.com.br/wps/portal/cetelem/normal/nl/login
informe a data de validade corretamente!
digite o nome gravado no cart
software\microsoft\windows\currentversion\run
digite o cpf do titular corretamente.!
No dia que eu encontrei essa tipo de criptografia e descobri a lógica delas eu até fiz um script PHP para descriptografar automaticamente, não é muito elaborado mas fica aí como exemplo.
<?php
// funcao recebe uma letra e retorna a anterior
function converte($letra){
$letra=strtoupper($letra);
if($letra=='A'){$letra='W';return $letra;}
if($letra=='B'){$letra='A';return $letra;}
if($letra=='C'){$letra='B';return $letra;}
if($letra=='D'){$letra='C';return $letra;}
if($letra=='E'){$letra='D';return $letra;}
if($letra=='F'){$letra='E';return $letra;}
if($letra=='G'){$letra='F';return $letra;}
if($letra=='H'){$letra='G';return $letra;}
if($letra=='I'){$letra='H';return $letra;}
if($letra=='J'){$letra='I';return $letra;}
if($letra=='K'){$letra='J';return $letra;}
if($letra=='L'){$letra='K';return $letra;}
if($letra=='M'){$letra='L';return $letra;}
if($letra=='N'){$letra='M';return $letra;}
if($letra=='O'){$letra='N';return $letra;}
if($letra=='P'){$letra='O';return $letra;}
if($letra=='Q'){$letra='P';return $letra;}
if($letra=='R'){$letra='Q';return $letra;}
if($letra=='S'){$letra='R';return $letra;}
if($letra=='T'){$letra='S';return $letra;}
if($letra=='U'){$letra='T';return $letra;}
if($letra=='V'){$letra='U';return $letra;}
if($letra=='X'){$letra='V';return $letra;}
if($letra=='Z'){$letra='X';return $letra;}
if($letra=='Y'){$letra='Z';return $letra;}
if($letra=='W'){$letra='Y';return $letra;}
return $letra;
}
// string a ser descriptografada
$s='OVS\OPJTSFXUOFSSVD\TAPEOJA\UGPTPSDJN\FSBAUGPT';
$rev=strrev($s); // inverte a direcao
// chama a funcao para converter
for($i=0;$i<strlen($rev);$i++){
$rev[$i]=converte($rev[$i]);
}
// exibe a string descriptografada em minúsculas
for($i=0;$i<strlen($rev);$i++){
echo strtolower($rev[$i]);
}
?>
Você também pode gostar: Decodificando Strings em Malwares
Não posso fazer nada, além de chutar...
ResponderExcluirFZF_0102_TTBMDJOV_VBUJ: me cheira a registro do windows
ojhpm/MO/mbnspo/nfmfufd/mbuspq/tqa/sc.npd.nfmfufd.aaa//:tquui
url criptografada e invertida? :P
Análise muito superficial.
É possivel descobrir o que esse trecho de código faz? Ele está isolado do código disassemblado, ou não?
Enfim, sou só um noob...
Anônimo,
ResponderExcluir"url criptografada e invertida? :P"
É por aí mesmo, está criptografada como?
Essas linhas que postei não fazem nada no código, são apenas partes de strings utilizadas em algum lugar do malware.
Mas todas possuem o mesmo padrão de criptografia, se você descobrir uma descobre todas.
Analise a URL que você consegue.
Abraço!
ASCII+1 :P
ResponderExcluirBom, é uma criptografia bem caseira que na maioria das vezes funciona bem :P
ResponderExcluirEu traduzi a URL.. ai o resto é só deduzir! :P
i=h
u=t
q=p
t=s
o=n
a=w
d=c
p=o
n=m
c=b
s=r
u=t
b=a
m=l
f=e
h=g
j=i
https://www.cetelem.com.br/wps/portal/cetelem/normal/NL/login
Era interessante o case completo do mesmo..abs!!!
ResponderExcluirComo fazer o script PHP funcionar no navegador IE?
ResponderExcluir"Não sei se isso pode ser chamado de criptografia ou obfuscação..."
ResponderExcluirEu chamo de obfuscação de "código", "nome", "endereço", etc.
Diário de um Tux,
ResponderExcluirAgradeço seus comentários no Blog, é sempre bom saber a opinião de outras pessoas.
Anônimo,
Você precisa ter o PHP instalado e configurado com o Apache por exemplo. Depois você copia esse código e salva em um arquivo com extensão .php na pasta raiz do Apache.
Então acessa pelo navegador através do endereço:
http://localhost/nomedoscript.php
A string criptografada vc coloca na variável:
$s='string criptografa';
Abraços!
"...é sempre bom saber a opinião de outras pessoas."
ResponderExcluirPrincipalmente, se elas estiverem certas.
Este comentário foi removido pelo autor.
ResponderExcluirEssa criptografia é baseada em tabela, sendo cada letra da cifra representando a verdadeira letra....
ResponderExcluirTemos 26 letras , ou seja ,26 combinações diferentes por cifra, tendo uma palavra de 4 letras, temos 26^4 possibilidades ou 456976 combinações possíveis, isso ? É mais fácil dumpar a aplicação e ficar vendo o que ela faz em memória do que tentar chutar uma combinação que nem essa.... estou certo ou errado ?
Ainda eu esqueci de mencionar 26 letras minusculas.... não mencionei as outras 26 maiusculas....
Isso Julien, tabelas de substituição.
ResponderExcluirNão conheço muito os conceitos corretos da criptografia mas tem material muito bom nesse site:
http://www.numaboa.com/criptografia/
Essa daí como era bem simples nem precisou fazer o dump, após analisar algumas strings foi possível descobrir o padrão, mas com certeza para as mais complexas é muito mais rápido executar o programa e pelo debug ir analisando os resultados.
Inclusive estou finalizando um novo post sobre uma funçao de criptografia de strings mais complexa encontrada em outro malware.
Abraço!