Páginas

segunda-feira, 11 de julho de 2011

Falha no anti-phishing do G-Buster

Dias atrás recebi um spam sobre alterações na minha conta corrente. Mesmo sabendo tratar-se de um e-mail de phishing resolvi entrar no site para checar os avanços no meio dos bankers. Em termos de layout o site estava bem feito, mas o módulo G-buster, antes que eu pudesse digitar qualquer coisa, redirecionou para o site verdadeiro do Banco do Brasil. 

Página de phishing encontrada


Segundo o site da Gas Tecnologia, G-Buster Browser Defense é uma solução desenvolvida para blindar e defender o Internet Banking contra fraudes e violação da privacidade de seus usuários. Utiliza tecnologias de detecção comportamental e resposta automática para impedir que páginas clonadas iludam usuários, programas espiões e códigos maliciosos sejam executados durante qualquer transação.

Intrigado com o funcionamento resolvi fazer alguns testes para entender os mecanismos do plugin. Para fins de pesquisa copiei o site para meu servidor web e verifiquei que o G-Buster redirecionava para o site verdadeiro do banco.

Esta página falsa em particular era constituída de duas imagens e campos de entrada sobrepostos nas imagens. Meu primeiro teste foi retirar todas as imagens utilizadas na página falsa, deixando apenas os campos de entrada de dados. Neste teste o G-Buster não redirecionou. Isso me levou a acreditar que a detecção de site falso reside na análise das imagens e não na disposição dos componentes.

No segundo teste deixei apenas a imagem de baixo, retirando o cabeçalho da página. O plugin nem se mexeu. Depois inverti o teste, deixando o cabeçalho e tirando a imagem de baixo. Desta vez o plugin redirecionou para a página verdadeira. Retirando os componentes e deixando apenas a imagem de cabeçalho o plugin não redirecionou para a página correta.

Mesmo sem uma imagem, plugin redireciona para o site original

O teste indica que a identificação de página falsa se daria a partir da imagem de cabeçalho da página juntamente com os campos de entrada.

No próximo teste movi o logotipo da empresa para o lado oposto da página. O plugin identificou sem problemas e redirecionou corretamente. Como próximo teste resolvi recortar o logotipo do banco, deixando um espaço em branco, já que a idéia lógica de identificação seria pelo logotipo da empresa. Desta vez o plugin não identificou como uma página falsa.

Raciocinando sobre este comportamento conclui-se que o plugin faz uma análise sobre a página, identificando campos de entrada e logotipo do banco. Caso o endereço seja desconhecido, os campos de entrada estejam presentes e o logotipo também, o plugin redireciona para o site original. 

Página simples que o plugin identifica como falsa

Este teste pode ser comprovado criando uma página que contenha apenas o logotipo do banco e três campos de entrada (sendo um deles do tipo 'password'). O plugin redireciona neste caso.

Com esta informação em mãos resolvi, como último teste, girar 180 graus o logotipo do banco. A mudança inverte o logotipo deixando as cores mais escuras em cima e as mais claras embaixo. O plugin não redirecionou para página correta. A mudança no logotipo enganaria facilmente 90% dos usuários. 

Página com logo invertido. Plugin não identifica como falsa e não rediciona


O funcionamento do plugin baseia-se em comparação do logotipo do banco juntamente com quantidade de campos de entrada e o tipo deles.

Diferença entre os logos.

Infelizmente a análise da imagem é falha em alguns pontos, mas é de fácil solução pelo fabricante. A empresa já foi contata sobre este problema

quinta-feira, 9 de junho de 2011

Botnets for Bitcoins

Botmasters are always trying to make a quick buck by renting their botnets for DDoS/SPAM, installing third-party malware (FakeAV) or stealing user credentials. It's not going to be a surprise when we finally see the first botnet mining bitcoins.

From Wikipedia, Bitcoin is a P2P currency created by  Satoshi Nakamoto. Bitcoins can be saved on a personal computer in the form of a wallet file or kept with a third party wallet service, and in either case bitcoins can be sent over the Internet to anyone with a Bitcoin address. Bitcoins are currently accepted in some cases for a small number of online services, work for hire, tangible goods and traders exchange regular currency (including US dollars, Russian rubles, and Japanese yen) for bitcoins through exchange sites. It is not possible in general to associate bitcoin identities with real-life identities. This property makes bitcoin transactions attractive to some sellers of illegal products.

The generation of a Bitcoin block requires finding the solution to a difficult cryptographic proof-of-work problem. Nodes which are attempting to generate blocks are called "miners". They repeatedly try solving instances of the problem through trial and error, each attempt having an equal and infinitesimal chance of being a correct solution. The number of Bitcoins created per block solved is never more than 50 BTC.

Pooled mining is an approach where multiple generating clients contribute to the generation of a block, and then split the block reward according the contributed processing power. Pooled mining effectively reduces the granularity of the block generation reward, spreading it out more smoothly over time.

With all that said we can be sure that in the near future we'll encounter some botnets mining bitcoins in a pooled mining kind of way since the design of the network is very favorable for the cybercriminal and the risk/reward is pratically non-existent. Is it possible that we'll find a botnet specialized in mining? Hardly, because the idea of the cybercriminal is to always maximize profits, so a botnet dedicated to only mine bitcoins could be considered a waste of resources. But mining as a module of multi-purpose botnets certainly is a go.

domingo, 10 de abril de 2011

aspnet_gh.mst

While working in a computer infected with a unknown version of TROJ_QDDOS I came accross a couple of "modules" that differ from the analysis made by Trend Micro. The thing is I'm not sure if this "module" is part of TROJ_QDDOS or just another new unknown malware.

Anyway this is a superficial analysis of the file I found. I don't go in much detail here because of time constraints. If you want the sample feel free to contact me.

The file is execute through rundll32.exe calling the exported function ProUpdate. It's a multi-stage dropper with some part of the malware in the resources.

First it creates a thread responsible for the unpacking of the malware.


It reads the some of the malware from the resources

 

Then it allocates 0x1519 bytes through VirtualAlloc and memcpys the 0x1515 bytes of the loaded resource to it's allocced destination


It decrypts the resource byte per byte


and then the location allocced is called. The malware employs a couple of anti-debugging techniques that are easily avoided with the right plug-ins.


The malware now starts to dynamically loads the required functions:
RegOpenKeyExA, RegQueryInfoKeyA, RegEnumKeyA, RegQueryValueExA, RegCloseKey, VirtualAlloc, GetModuleHandleA, LoadLibrary, GetProcAddress, VirtualFree, lstrcmpA, lstrcatA, lstrcpynA, lstrlenA, GetTickCount, GlobalAlloc, Sleep, srand, time, rand, memmove, strstr, atoi, memset, memcmp, memcpy, wsprintfA, recv, closesocket, socket, setsockopt, inet_addr, gethostbyname, ntohs, connect, send, WSAStartup.
Reg functions are used to verify the use of proxies by the system. When a proxy is detected the malware tries to connect to it's server through the proxy.


Now that everything is setup the malware tries to connect to a especified server in the port 443.


It keeps trying to connect every few seconds. Once connected, the communication employs a kinda of "encryption" to avoid analysis.


When connection is succesfull, a encrypted malware is downloaded, decrypted and executed in memory.

The malware downloaded will be analyzed as soon as I have more time.

See you all.