m0nad's Blog

Just another WordPress.com site

Archive for the ‘Paper’ Category

Construindo Shellcodes

with one comment

Meu artigo no Cogumelo Binário, sobre desenvolvimento de shellcodes, visa arquitetura x86,  artigo simples, bom para iniciantes.

Índice
    1) Apresentação
    2) O que são shellcodes?
    3) Ferramentas
    4) Ambiente
    5) System Calls
    6) Exemplos:
      6.1) 'exit(0);' em assembly
      6.2) 'exit(0);' em shellcode
      6.3) 'exit(0);' em assembly nullbyte-free
      6.4) 'exit(0);' em shellcode nullbyte-free
      6.5) 'write(1, "Alo Mundo", 10);' em assembly nullbyte-free
      6.6) 'write(1, "Alo Mundo", 10);' em shellcode nullbyte-free
      6.7) 'execve("/bin/sh", NULL, NULL);' em assembly nullbyte-free
      6.8) 'execve("/bin/sh", NULL, NULL);' em shellcode nullbyte-free
    7) Perguntas?
    8) Referências

http://cogubin.leet.la/edicoes/1/ConstruindoShellcodes.txt

https://raw.github.com/m0nad/Papers/master/ConstruindoShellcodes.txt

Anúncios

Written by m0nad

dezembro 22, 2011 at 6:14 pm

Cogumelo Binário – 2º Edição – Call for papers!

leave a comment »

Cogumelo Binário – 2º Edição – Call for papers!

Vamos que vamos! Aproveitando o embalo do lançamento da 1ª edição, convocamos a todos a
participarem da 2ª edição da Cogumelo Binário! Assim como na primeira edição, mantemos
o foco nos seguintes tópicos: hacking em geral, crypto, unix, low-level, RE, tricks etc.

Se você gosta de montar crackme/exploitme e quiser contribuir, mande para fazermos um
desafio entre o público que acompanha a e-zine!
Dúvidas? Sugestões? Pra onde enviar o paper? Entre em contato!

E assim como na primeira edição, divulgaremos o deadline para envio de paper, bem como a
data de lançamento da 2ª edição em um momento oportuno! Fique ligado!

http://cogubin.leet.la

Written by m0nad

dezembro 20, 2011 at 1:12 am

Publicado em Assembly, C, Paper, Segurança

Tagged with

Cogumelo Binário 1º Edição

leave a comment »

root@cogubin# cat apresentacao.txt

Cogumelo Binário – 1º Edição
===============================================

“Diretamente do submundo, úmido, gélido e cheio de fungos da
internet, nasce o Cogumelo Binário”

É com muita felicidade, que apresentamos a primeira edição do
Cogumelo Binário, uma e-zine
feita pela comunidade para a comunidade.

O mérito de organizar, produzir e divulgar é de todos, pois sem a
comunidade nada disso seria feito.

Devemos ressaltar que, o objetivo do cogumelo binário, não é
competir com outras e-zines,
mas sim cooperar com a cena pt_br, não por uma questão de
nacionalidade, mas sim de inclusão
daqueles que tem esta língua como de melhor compreensão.

É triste ver que a cena andava meio estagnada, e a mercantilização
da mesma se tornou
eminente, engessando o avanço da disseminação da informação, assim
como a ascensão de novos
talentos.

Esperamos com isso dar uma renovada mostrando que existe gente
muito boa, querendo divulgar
e disseminar a informação. (for fun and profit)

Agradecemos à todos que ajudaram na divulgação da e-zine, àqueles
que se prontificaram a
serem mirror, aos que mandaram papers e ao Rodrigo Rubira Branco (aka
BSDaemon) por
ter ajudado a revisar alguns dos papers desta edição, e ao Cleiton
Alves (aka Clandestine)
pelo apoio na divulgação.

root@cogubin# cat mirrors.txt

Mirror Hosting com colaboração de:
staff        – http://cogubin.leet.la
eremitah     – http://cogumelobinario.hashit.org
ack_syn      – http://200.218.196.14/zine
mentebinaria – http://mentebinaria.com.br/zine
bugsec       – http://bugsec.com.br/zine
c00kies      – http://c00kies.org/Zine
Von natur    – http://0fx66.com/files/zines/cogumelo-binario/call
Ping         – http://ping.eti.br/docs/01/05/
b0tluk       – http://d4rkr00t.com.br/zine/cogumelo-binario
Zlude        – http://filipebarros.com.br/zine
Zlude        – http://in.trusion.org/zine

Se você também quer contribuir para o Cogumelo Binário sendo um
mirror, fale conosco!

Written by m0nad

dezembro 10, 2011 at 5:38 pm

Publicado em Paper, Segurança

Tagged with

Cogumelo Binário – e-zine underground

leave a comment »

Cogumelo Binário e amigos

Bom dia Boa Noite e Boa Noite Bom Dia!
===============================================

Povo do Underground.
O “Cogumelo Binário” é uma e-zine sem fins lucrativos,
defendemos a liberdade, e o hacktivismo como meio de atuação.
Almejamos o senso comum da maioria.
Onde temos uma velha utopia em que líderes invés de se servir,
sirvam os outros.

Até aqui foi cliché? Mas a necessidade de uma e-zine undergroud na cena
brasileira se faz eminente, hoje em dia, vemos muitos cidadãos egocêntricos
em “T.I” achando que reter a informação é o meio de se ter mais lucro
pessoal.

“Ninguém pode conceber tão bem uma coisa e fazê-la sua,
quando a aprende de um outro, em vez de a inventar ele próprio.”
-Rene Descartes

Ninguém retém informação aqui, o objetivo é claro!, ensine-nos
o que sabe para continuarmos o seu conhecimento, e aprenda o que
sabemos para assim poder continuar evoluindo e disseminando a informação.

Contribua com artigos, dicas, entrevistas, códigos sobre hacking,
redes, cripto, unix, tricks, low level, etc, seja criativo! aproveite e divulgue seus
projetos!

Fico feliz por visitarem nossa e-zine sombria e cheia de fungos,

-Do seu humilde anfitrião “Cooler_”
—-Seja Bem Vindo—-

contato e envio de material:
m0nad at email dot com
ack_syn at acksyn dot com.br
mlk_geek at hotmail dot com
c00f3r at gmail dot com

Mirror Hosting com patrocínio de:

eremitah – cogumelobinario.hashit.org
ack_syn – 200.218.196.14/zine/
mentebinaria – mentebinaria.com.br/zine/
bugsec – bugsec.com.br/zine/
c00kies – c00kies.org/Zine/
Von natur – 0fx66.com/files/zines/cogumelo-binario/call/
Ping – ping.eti.br/docs/01/05/

Written by m0nad

novembro 12, 2011 at 2:18 pm

Publicado em Paper, Segurança

Tagged with

Notas ‘pessoais’ sobre códigos ‘auto-replicáveis’

leave a comment »

—notas em códigos ‘auto-replicáveis’, por m0nad—
código do ken thompson , auto replicável:
http://www.azillionmonkeys.com/qed/self3_c.txt

m0nad@m0nad-notebook:~/projects/selfreplica$ gcc -o selfreplica selfreplica.c
selfreplica.c: In function ‘main’:
selfreplica.c:26: warning: incompatible implicit declaration of built-in function ‘printf’
m0nad@m0nad-notebook:~/projects/selfreplica$ ./selfreplica
char s[] = {
0x6D, 0x61, 0x69, 0x6E, 0x28, 0x29, 0x20, 0x7B,
0x0D, 0x0A, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x3B,
0x0D, 0x0A, 0x09, 0x70, 0x72, 0x69, 0x6E, 0x74,
0x66, 0x28, 0x22, 0x63, 0x68, 0x61, 0x72, 0x20,
0x73, 0x5B, 0x5D, 0x20, 0x3D, 0x20, 0x7B, 0x22,
0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x72,
0x28, 0x69, 0x3D, 0x30, 0x3B, 0x73, 0x5B, 0x69,
0x5D, 0x21, 0x3D, 0x27, 0x5C, 0x30, 0x27, 0x3B,
0x69, 0x2B, 0x2B, 0x29, 0x20, 0x7B, 0x0D, 0x0A,
0x09, 0x09, 0x69, 0x66, 0x28, 0x20, 0x28, 0x69,
0x26, 0x37, 0x29, 0x3D, 0x3D, 0x30, 0x20, 0x29,
0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x28,
0x22, 0x5C, 0x6E, 0x22, 0x29, 0x3B, 0x0D, 0x0A,
0x09, 0x09, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66,
0x28, 0x22, 0x30, 0x78, 0x25, 0x30, 0x32, 0x58,
0x2C, 0x20, 0x22, 0x2C, 0x73, 0x5B, 0x69, 0x5D,
0x29, 0x3B, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A,
0x09, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x28,
0x22, 0x30, 0x5C, 0x6E, 0x7D, 0x3B, 0x5C, 0x6E,
0x25, 0x73, 0x5C, 0x6E, 0x22, 0x2C, 0x73, 0x29,
0x3B, 0x0D, 0x0A, 0x7D, 0
};
main() {
int i;
  printf("char s[] = {");
  for(i=0;s[i]!='\0';i++) {
    if( (i&7)==0 ) printf("\n");
    printf("0x%02X, ",s[i]);
 }
 printf("0\n};\n%s\n",s);
}
m0nad@m0nad-notebook:~/projects/selfreplica$

eu olhei e falei ‘style’, entendi o conceito mas implementei de outra forma, fiz um oneliner em perl, pra fazer um estilo ‘shellcode’ dos valores ascii. =p

m0nad@m0nad-notebook:~/projects/selfreplica$ cat > 1.c
int main () { };
^C
m0nad@m0nad-notebook:~/projects/selfreplica$ cat 1.c | perl -ne '@a = split //, $_;printf "\\x%02x", unpack("C*", $_) foreach (@a)';echo
\x69\x6e\x74\x20\x6d\x61\x69\x6e\x20\x28\x29\x20\x7b\x20\x7d\x3b\x0a
m0nad@m0nad-notebook:~/projects/selfreplica$

ok, conferi se isso iria retornar oque eu queria

m0nad@m0nad-notebook:~/projects/selfreplica$ cat selfreplica-m0nad1.c
char notevil[] = "\x69\x6e\x74\x20\x6d\x61\x69\x6e\x20\x28\x29\x20\x7b\x20\x7d\x3b\x0a";
#include <stdio.h>
int
main ()
{
 printf ("%s", notevil);
 return 0;
}

m0nad@m0nad-notebook:~/projects/selfreplica$ gcc -o selfreplica-m0nad1 selfreplica-m0nad1.c
m0nad@m0nad-notebook:~/projects/selfreplica$ ./selfreplica-m0nad1
int main () { };
m0nad@m0nad-notebook:~/projects/selfreplica$

ieí!!
ok, agora vou fazer um notevil do próprio código, mas tem um problema ai
preciso imprimir o código em C e o do ‘notevil’, ok , relendo o código do ken thompson…

  for(i=0;s[i]!='\0';i++) {
    if( (i&7)==0 ) printf("\n");
    printf("0x%02X, ",s[i]);

}

ou seja, ele cria a formatação do próprio hexadecimal, enquanto o nao chega a o final, q eh um nullbyte , style neh?

bem, fiz algo parecido, segue o código.

m0nad@m0nad-notebook:~/projects/selfreplica$ cat selfreplica-m0nad-final.c
char notevil[] = "\x23\x69\x6e\x63\x6c\x75\x64\x65\x20\x3c\x73\x74\x64\x69\x6f\x2e\x68\x3e\x0a\x69\x6e\x74\x0a\x6d\x61\x69\x6e\x20\x28\x29\x0a\x7b\x0a\x20\x20\x69\x6e\x74\x20\x69\x20\x3d\x20\x30\x20\x3b\x0a\x20\x20\x70\x72\x69\x6e\x74\x66\x20\x28\x22\x63\x68\x61\x72\x20\x6e\x6f\x74\x65\x76\x69\x6c\x5b\x5d\x20\x3d\x20\x5c\x22\x22\x29\x3b\x0a\x20\x20\x77\x68\x69\x6c\x65\x20\x28\x6e\x6f\x74\x65\x76\x69\x6c\x5b\x69\x5d\x29\x20\x7b\x0a\x20\x20\x20\x20\x70\x72\x69\x6e\x74\x66\x20\x28\x22\x5c\x5c\x78\x25\x30\x32\x78\x22\x2c\x20\x6e\x6f\x74\x65\x76\x69\x6c\x5b\x69\x2b\x2b\x5d\x29\x3b\x0a\x20\x20\x7d\x0a\x20\x20\x70\x72\x69\x6e\x74\x66\x20\x28\x22\x5c\x22\x3b\x5c\x6e\x25\x73\x22\x2c\x20\x6e\x6f\x74\x65\x76\x69\x6c\x29\x3b\x0a\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\x0a\x7d\x0a";
#include <stdio.h>
int
main ()
{
  int i = 0 ;
  printf ("char notevil[] = \"");
  while (notevil[i]) {
    printf ("\\x%02x", notevil[i++]);
  }
  printf ("\";\n%s", notevil);
  return 0;
}

testando… 😀

m0nad@m0nad-notebook:~/projects/selfreplica$ gcc -o selfreplica-m0nad-final selfreplica-m0nad-final.c
m0nad@m0nad-notebook:~/projects/selfreplica$ ./selfreplica-m0nad-final >teste
m0nad@m0nad-notebook:~/projects/selfreplica$ diff selfreplica-m0nad-final.c teste
m0nad@m0nad-notebook:~/projects/selfreplica$

😀
abraços galera.

happy hacking !

Downloads:

https://raw.github.com/m0nad/Papers/master/selfreplica-notas.txt -> Este artigo acima.

https://raw.github.com/m0nad/C/master/selfreplica-m0nad-final.c -> Código PoC em C

Written by m0nad

abril 9, 2011 at 1:57 pm

Publicado em C, Paper, Segurança

Buffer Overflows para Iniciantes

leave a comment »

Buffer Overflows para Iniciantes
---------------------------------
   aka BOF for dummies por m0nad
   -----------------------------

- Apresentação
- Oque é Buffer Overflow?
- Desabilitando Proteções
- Identificando a vulnerabilidade
- Métodos de Exploração
    Podemos sobrescrever outras variáveis da pilha
    Podemos tambem, sobrescrever por exemplo, um ponteiro.
    Tomar o constrole de fluxo da aplicação!
- Conclusão
- Agradecimentos

Downoad: https://raw.github.com/m0nad/Papers/master/buffer_overflow_iniciantes.txt

Written by m0nad

março 28, 2011 at 8:45 pm

Publicado em C, Paper, Segurança

Retornando para LibC / Ret2libc

leave a comment »

Retornando para LibC / Ret2libc
—-> Tema    : Retornando para LibC / Ret2libc
—-> Autor   : m0nad [at] email.com
—-> Data    : 12/3/2010

–Índice

– Apresentação
– Pré-requisitos
– Introdução
– Desabilitando Proteções
– O Código Vulnerável
– Utilizando o GDB
– Utilizando a função getenv
– A Exploração
– Conclusão
– Referencias
– Agradecimentos

Download: https://github.com/m0nad/Papers/raw/master/ret2libc.txt

Written by m0nad

dezembro 25, 2010 at 10:19 pm

Publicado em Assembly, C, Paper, Segurança