segunda-feira, 26 de setembro de 2011

Instalação do Metasploit

Testado em Debian e Ubuntu, mas creio que funciona para qualquer outra distribuição uma vez que foi utilizado pacote universal.

1) baixar o pacote instalador em http://www.metasploit.com/download/:
No meu caso baixei o 64bits full setup (http://updates.metasploit.com/data/releases/framework-4.0.0-linux-full.run)

2) Alterar para root com "su -" e instalar o pacote dentro o /opt:
$ su - (atenção, não funcionou com "su", pois não carrega todas as variáveis de ambiente)
# chmod 700 framework*.run
# ./framework*.run  (deve perguntar se deseja atualizar base, então diga sim)

3) Atualizar a base de dados caso não o tenha feito:
# msfupdate

4) Utilizar o metasploit como usuário comum:
$ msfconsole

Quanto ao uso do metasploit, futuramente coloco algumas instruções.

segunda-feira, 12 de setembro de 2011

Ubuntu 11.04 x Dell Vostro 3450 c/ placa gráfica ATI Radeon 6600

Infelizmente não consegui funcionar a placa gráfica AMD Radeon HD6600M Series no Ubuntu 11.04. Este problema não é particularidade do Ubuntu, mas pelo que li em alguns foruns, devido a placa possuir somente ainda drivers proprietários, não tem como desenvolvedores Linux aprimorarem o driver de forma que ele funcione como deveria.

Minhas placas gráficas são:
#lspci | grep VGA
Intel Corporation 2nd Generation Core Processos Family Integrated Graphics Controller (rev 09)
ATI Technologies Inc NI Whistler [AMD Radeon HD 6600M Series] (rev ff)

Enquanto aguardo este parangolê funcionar direito, a solução que utilizo (baseando-me no artigo VGAswitcheroo – Tópico Definitivo), foi fazer com que o módulo da placa gráfica radeon carregue DEPOIS da placa onboard e isto pode ser feito da seguinte forma:

1°) colocar o módulo radeon na blacklist, o que o impedirá de ser carregado primeiro:
echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf

2°) Carregar o módulo radeon no script rc.local e desligar a placa radeon para economizar energia do notebook. Para isto, edite o arquivo /etc/rc.local e insira as seguintes linhas antes do "exit 0":

modprobe radeon
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch

A respeito da 2ª linha acima, um resumo de opções possíveis(informações obtidas do link mencionado anteriormente):
ON – liga a placa gráfica secundária (e que não está sendo utilizada no momento)
OFF – desliga a placa gráfica secundária (e que não está sendo utilizada no momento)
DDIS – alterna a placa gráfica discreta(popular offboard), como a placa primária da sessão.
DIGD - alterna a placa gráfica integrada, como a placa primária da sessão.

quarta-feira, 31 de agosto de 2011

Script de reinicialização para Windows

Infelizmente algumas aplicações comerciais AINDA rodam apenas em Windows. Outras ainda por cima EXIGEM que o usuário tenha permissões de administrador para que o sistema funcione. Na minha opinião trata-se de algo inaceitável quando se fala em segurança da informação. Porém deixemos esta questão para discussão futura.
Uma solução que ajuda um pouco na segurança, é colocar o executável do programa para ser inicializado ao login do usuário, de forma que o usuário fique preso somente à aplicação e não ao ambiente windows do servidor (como eu disse ajuda "um pouco" na segurança).
Caso seja necessário reiniciar o windows, o qual tem como "plugin" a necessidade de ser reinicializado por diversos motivos (algumas vezes inexplicáveis), sugiro a criação de um usuário qualquer, o qual tenha um script de execução para ser ativado ao se logar. Exemplo: crie um usuário chamado "reiniciar" e tenha como executável o script "reiniciar.bat".

O conteúdo do script deverá ser algo como:
@echo off
cls
echo ATENCAO: o servidor sera reiniciado dentro de 10 segundos,
pause
shutdown /r /t 10 /f

Onde as opções do comando shutdown são:
/r para reiniciar
/t 10 aguardar 10 segundos para executar
/f forçar a reinicialização (independente do que estiver rodando na máquina

quarta-feira, 22 de junho de 2011

Habilitar o uso do TOR no PIDGIN

Ao editar uma conta já criada no pidgin, acesse a aba "proxy" e selecione o tipo de proxy "socks 5". Em seguida preencha o Host com "127.0.0.1" e Porta com 9050.

Considerando que o polipo já esteja configurado, agora é só navegar.

terça-feira, 1 de fevereiro de 2011

Copiar HD via rede usando dd e nc

A algum tempo me deparei com um problema típico: fazer a instalação idêntica de um sistema Linux (na época era um Slackware) em um laboratório com mais de 30 computadores. Como é sabido pelos que atuam na área, a clonagem usando o Ghost nem sempre funciona bem.

A solução viável então seria a utilização do comando "dd", porém ele sozinho ainda não seria viável. Imagine tirar mais de 30 HDs um a um das máquinas destino e colocá-los na máquina origem, dar o boot e executar o DD para copiar... Seria um trabalho muito cansativo e sinceramente não tão eficiente.

A solução que utilizei foi a seguinte:

1) Instalar o sistema e configurá-lo em apenas uma máquina (denominada origem).

2) Na máquina origem, após instalado e configurado o sistema, dar boot com um LiveCD Debian (para que o sistema não inicie do HD da própria máquina).

3) Na máquina destino também dar boot com um LiveCD Debian.

Obs.: Neste momento ambas as máquinas (origem e destino) inicializaram utilizando um Debian LiveCD (sistema independente do HD das máquinas).

4) Conecte uma máquina à outra utilizando um cabo CROSSOVER. É imprescindível esta forma de conexão, pois a possibilidade colisão pode-se dizer que é nula, uma vez que o tráfego será direto de uma placa a outra, sem intermediários e direção oposta de dados trafegando. A utilização de switch não foi satisfatória(obtive erro de cópia em 25% das máquinas).

5) No destino execute os seguintes comandos:

$ sudo su
# ifconfig eth0 10.0.0.2 netmask 255.255.255.0
# nc -l -p 9000 | dd of=/dev/hda


Obs.: Após o último comando, o prompt deverá ficar piscando sem nenhuma informação, aguardando o envio dos dados. Mantenha esta máquina inativa, até o término completo da operação. Só será exibida alguma mensagem ao término do processamento. A única característica de presença de funcionamento é o LED de indicação de leitura/escrita do HD funcionando freneticamente.

6) Na origem execute os seguintes comandos:

$ sudo su
# ifconfig eth0 10.0.0.1 netmask 255.255.255.0
# dd if=/dev/hda | nc 10.0.0.2 9000


Assim como na máquina destino, após o último comando, o prompt deverá ficar piscando sem nenhuma informação. Observe o LED de indicação de leitura/escrita do HD em funcionamento.

7) Após o término da operação, será exibido uma mensagem do comando dd indicando a quantidade de dados copiados e o prompt normal aparecerá novamente na tela de ambas as máquinas (origem e destino).

Neste momento a cópia está completa, bastando dar o boot normal na máquina destino e testar o sistema copiado.

Como no meu caso eram várias máquinas destino, o que fiz em seguida foi:

a) selecionar a nova máquina de destino
b) executar os passos 3, 4, 5 e 6

Esta solução possibilita mais agilidade e eficiência no procedimento uma vez que não é necessário abrir nenhuma máquina, sendo apenas necessário o manuseio de cabo, ligando-o às máquinas desejadas (origem e destino).

Finalizo dizendo que nada é perfeito. Fazendo a cópia desta forma, obtive erro em 2% das máquinas, o que melhorou muito em comparação ao uso do ghost.

Descrição dos comandos utilizados nos passos 5 e 6:
  • sudo su -> mudança para usuário root no liveCD
  • ifconfig -> configuração da placa de rede (no exemplo deve estar na mesma subrede)
  • dd -> comando para cópia idêntica (bit a bit) de um arquivo ou partição. No caso utilizei para a cópia do HD inteiro.
  • nc -> (netcat) comando que realiza leitura/escrita através de conexões de rede.

A última linha nos passos 5 e 6, é uma combinação dos comandos "dd" e "nc", que fazem a copia de origem e destino, considerando que ambos estão em pontos de rede diferentes.

Obrigado, até a próxima.

quinta-feira, 2 de setembro de 2010

LINUXCON 2010 BRAZIL - Eu estive lá e vi o Torvalds !!!!

Linus Torvalds e Dorival M Machado Junior
Dorival M Machado Junior e Andrew Morton

Poisé pessoal, ocorreu nos dias 31 de agosto a 1º de setembro de 2010 a Conferência Internacional sobre Linux - LINUXCON 2010, a qual teve uma seleta grade de palestras e tutoriais, além de estarem presentes no evento, o criado do Linux, Sr. Linus Torvalds bem como o mantenedor do Kernel, Sr. Andrew Morton. Para quem ainda não é familiarizado no mundo Linux, estes dois cidadãos é quem dão a palavra final de aprovação a cada nova versão de kernel lançada.
Não poderia deixar de publicar estas fotos que foram tiradas com muito custo, afinal, Torvalds e Morton estavam como astros de rock no meio da galera!

sexta-feira, 6 de agosto de 2010

Bloqueio de ultrasurf usando apenas iptables

INTRODUÇÃO:

A porta 443 é normalmente liberada pelo firewall para repasse, pois caso contrário, os usuários não conseguiriam acessar sites com áreas seguras como um internet banking por exemplo. Assim o Ultrasurf se utiliza deste recurso essencial, estabelecendo várias conexões por esta porta, criando vários "tuneis" que saem da máquina do indivíduo até a máquina firewall (a qual mantém as regras de bloqueio). O firewall então achando que se trata de uma conexão https, permite o repasse do fluxo de dados. Dali pra frente a conexão sai para possíveis proxys anonimos espalhados na internet ou coisa do tipo, permitindo assim a conexão a qualquer endereço de destino, ou seja, o firewall não tem conhecimento real do que se passa naquele fluxo de dados. O retorno das informações ocorre da mesma forma: os pacotes de resposta chegam e entram pelos mesmos "tuneis" estabelecidos na porta 443 do firewall e chegam à máquina do usuário sem maiores complicações. Um fator interessante é que até a velocidade de conexão usando o ultrasurf é bem aceitável, tornando esta ferramenta muito popular entre universitários e usuários de redes com muitos bloqueios.



COMO BLOQUEAR O ULTRASURF:

A única forma de bloquear o ultrasurf é tratando diretamente a porta 443 do firewall da rede. Assim, apresento duas formas de fazer o bloqueio:

a) bloquear totalmente as conexões pela porta 443, porém esta forma bloqueará também o acesso a qualquer site https.
REDE="192.168.100.0/24"  #informe a rede interna
iptables -I FORWARD -s $REDE -p tcp --dport 443 -j DROP


b) Com o auxilio do cron, fazer um monitoramento constante do nível de uso da porta 443, analisando quantas conexões cada máquina da rede utiliza pela porta 443. Mediante esta análise, executar o bloqueio apenas para o IP da rede interna que está solicitando muitas conexões pela porta 443, o que é um fator relevante de uso suspeito do ultrasurf, afinal ninguém acessa 5 ou mais bancos simultaneamente ou coisa do tipo! Inicialmente, um total de 8 conexoes https seriam aceitáveis, basta agora adequar esse número à realidade da sua rede, definindo qual o máximo de conexões https que cada maquina pode fazer simultaneamente.



DESCRICAO E UTILIZAÇÃO DO SCRIPT.

Apresentação do script:
Através do parâmetro "verifica", o script faz a verificação IP por IP, analisando quantas conexões pela por 443 cada um possui. Caso esteja acima do limite permitido, uma regra é aplicada especialmente para aquele IP e a porta 443. O desbloqueio é feito através do parámetro "libera" do sccript.

------inicio---------------------------
#!/bin/bash
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# arquivo : 443-control.sh
# objetivo: tratar o uso suspeito do ultrasurf na porta 443
# autor   : Dorival M Machado Junior ( dorivaljunior at gmail.com )
# versao  : 2.0
# data    : 07-mai-2010
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

I="1"  # contador para o while
MAX="8" # maximo de coneccoes permitidas com a porta 443
DATA=$(/bin/date) # pega a data do sistema
IPTABLES="/usr/local/sbin/iptables"
LOG_ULTRASURF="/var/log/log.ultrasurf"
GREP="/bin/grep"
ECHO="/bin/echo"
IPTSTATE="/usr/sbin/iptstate"
TAIL="/usr/bin/tail"
AWK="/usr/bin/awk"
SORT="/usr/bin/sort"
UNIQ="/usr/bin/uniq"
WC="/usr/bin/wc"


LIBERA_443() # libera possiveis bloqueios de repasse a porta 443
{
        while [ $I -lt "255" ]; do # enquanto i for menor que 255 faca
                IP=$( $ECHO "192.168.100.$I@" ) # ip da maquina atual (o @ evita insercao de outros IPs erroneamente)
                RESULTADO_BLOQUEIO=$( $IPTABLES -n -L FORWARD | tr -s [:blank:] @ | $GREP $IP | $GREP 443 )
                if [ ! -z "$RESULTADO_BLOQUEIO" ] # se nao estiver vazio a variavel de resultado de bloqueio
                then
                        $IPTABLES -D FORWARD -s $IP -p tcp --dport 443 -j DROP
                        $ECHO "$DATA: IP $IP liberado para fazer conexoes 443 novamente." >> $LOG_ULTRASURF
                fi

                let I++ # incrementa contador

        done
        echo "$DATA: Verificacao de necessidade de liberacao de IPs internos bloqueados para porta 443 realizada." >>

$LOG_ULTRASURF
}



VERIFICA_443() # verifica uso abusivo da porta 443
{
        while [ $I -lt "255" ]; do # enquanto i for menor que 255 faca
                IP=$( $ECHO "192.168.100.$I" )  # ip da maquina atual
                # vendo quantas conexoes com destino a porta 443 foram estabelecidas para o IP
                RESULTADO_IP=$( $IPTSTATE -s 192.168.100.$I -D 443 -1 | $TAIL -n +4 | $AWK '{print $2}' | $SORT | $UNIQ | $WC

-l )
                if [ $RESULTADO_IP -gt $MAX ]   # se o resultado eh maior que MAX, entao
                then
                        $IPTABLES -I FORWARD -s $IP -p tcp --dport 443 -j DROP  # bloqueia repasse do IP para a porta 443
                        $ECHO "$DATA: IP $IP utilizando $RESULTADO_IP conexoes pela porta 443; bloqueando acesso a esta

porta." >> $LOG_ULTRASURF # gerando resultado no arquivo de log
                fi

                let I++ # incrementa contador

        done

        echo "$DATA: Verificacao de uso suspeito do ultrasurf realizada." >> $LOG_ULTRASURF
}

AJUDA()
{
        echo "$0 - Tratamento de uso suspeito do ultrasurf"
        echo ""
        echo "Opcoes:"
        echo "   verifica  -  verifica o uso abusivo de forward para a porta 443"
        echo "   libera    -  libera possiveis bloqueios de forward para a porta 443"
        echo "   help      -  ajuda"
        echo ""
}

 case "$1" in
        verifica)
                VERIFICA_443
        ;;
        libera)
                LIBERA_443
        ;;
        help)
                AJUDA
        ;;
        *)
                echo "Uso: $0 {verifica|libera|help}"
        ;;
esac
------fim---------------------------


1. Primeiramente preencha-o adquando à sua realidade.


2. Crie as seguintes regras no cron:
# crontab -e

*/10 * * * * /root/443-control.sh verifica
35 11 * * * /root/443-control.sh libera

A primeira regra faz a verificação a cada 10 minutos.
A segunda regra, faz a liberacao dos bloqueios realizados. Assim, defina um horário diário em que as regras de bloqueio serão limpas.

Até a próxima
Dorival M Machado Junior
São Sebastião do Paraíso-MG